ОШИБКА: значение массива должно начинаться с "{" или информации о размерах - PullRequest
3 голосов
/ 03 октября 2011

Это моя функция:

DECLARE
f_ids integer[] := '{}';
BEGIN
SELECT INTO f_ids  "fileId" FROM "tbFiles" WHERE "size" <= $2 AND
"size" >=$1 ;
RETURN f_ids;
END;

Эта функция должна возвращать bigint[], но когда я пытаюсь запустить ее, я получаю эту ошибку:

SELECT "GetFilesBySize"(0,888)

ERROR:  array value must start with "{" or dimension information
CONTEXT:  PL/pgSQL function "GetFilesBySize" line 4 at SQL statement 

Мне кажется,что массив правильно инициализирован, так в чем же ошибка?

1 Ответ

7 голосов
/ 03 октября 2011

Это будет работать:

DECLARE
    f_ids integer[];
BEGIN
    SELECT INTO f_ids array_agg(fileId) FROM tbFiles WHERE size <= $2 AND size >=$1;
    RETURN f_ids;
END

Но я думаю, вам лучше использовать реальный набор возвращающих функций или использовать RETURN QUERY. Найдите руководство PostgreSQL для обоих терминов.

...