2011-10-03 32 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

相關問題