2014-11-06 31 views
0

我調用函數,但它返回錯誤陣列值必須使用維度信息我想unnet其他數組來查詢的Postgres數據庫

Create or Replace Function get_post_process_info(IN v_esdt_pp character varying[]) 
Returns setof Record as 
$$ 
Declare 
post_processes RECORD; 
esdt_value character varying; 
v_sdsname character varying[]; 
v_dimension character varying[]; 
counter int := 1; 
Begin 
    -- to loop through the array and get the values for the esdt_values 
    FOR esdt_value IN select * from unnest(v_esdt_pp) 
    LOOP 

    -- esdt_values as a key for the multi-dimensional arrays and also as the where clause value 
    SELECT distinct on ("SdsName") "SdsName" into v_sdsname from "Collection_ESDT_SDS_Def" where "ESDT" = esdt_values; 
    raise notice'esdt_value: %',esdt_value; 

    END LOOP; 

    Return ; 
End 
$$ Language plpgsql; 



Select get_post_process_info(array['ab','bc]); 
+1

您是否錯過了'Select'get_post_process_info(array ['ab','bc])''''? – Houari 2014-11-06 20:43:06

回答

0

你的函數消毒的開始「{」或:

CREATE OR REPLACE FUNCTION get_post_process_info(v_esdt_pp text[]) 
    RETURNS SETOF record AS 
$func$ 
DECLARE 
    esdt_value text; 
    v_sdsname text[]; 
    v_dimension text[]; 
    counter int := 1; 
BEGIN 
    FOR esdt_value IN 
     SELECT * FROM unnest(v_esdt_pp) t 
    LOOP 
     SELECT distinct "SdsName" INTO v_sdsname 
     FROM "Collection_ESDT_SDS_Def" 
     WHERE "ESDT" = esdt_value; 

     RAISE NOTICE 'esdt_value: %', esdt_value; 
    END LOOP; 
END 
$func$ Language plpgsql; 

電話:

Select get_post_process_info('{ab,bc}'::text[]); 

DISTINCT代替DISTINCT ON,缺少表別名,格式化,一些cruft,...
最後導致錯誤的直接原因:調用中缺少引號。

整個shebang可能被替換爲單個SQL語句。
但是,顯然,你的功能是不完整的。沒有任何回報。信息丟失。

+0

我已更新代碼,但仍出現錯誤 SELECT get_post_process_info('{ab,cd}':: text []); **********錯誤********** 錯誤:數組值必須以「{」或維信息開頭 SQL狀態:22P02 上下文:PL/pgSQL函數get_post_process_info (text [])第15行SQL語句 – user3525323 2014-11-07 13:48:59

+0

我想返回該函數作爲多維數組。 like 「Select distinct」SdsName「into v_sdsname [counter] ... ...」並且所有內容都將作爲記錄分配給post_processes。計數將對應於函數參數 – user3525323 2014-11-07 13:53:58

+0

@ user3525323的索引號:我在我的答案中修復了一個錯字。但這不是錯誤味精的原因。也許''SdsName「'不是數組類型。除非你的問題*還包含表格定義,否則不能多說。理想情況下也是一個包含樣本數據和預期結果的測試案例。 – 2014-11-07 17:46:09