2011-10-03 148 views
3

这是我的函数:错误:数组值必须以“{”或维度信息

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 

在我看来,数组已正确初始化,所以错误在哪里?

回答

7

这将工作:

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手册。

+0

+1提及设置返回功能 –

+0

你是第一个建议如何使用RETURN QUERY,谢谢 – Tim

相关问题