簡體   English   中英

返回一個包含多列的表

[英]returns a table of several columns

我想創建一個函數,它返回一個包含多個列的表,這取決於每個參數輸入的列數

即:如果變量num_columns為10,則函數必須返回10列,如果num_columns為15,則函數必須返回15列,這是我的函數:

CREATE OR REPLACE FUNCTION "estadisticas"."fn_tabla_mes_lab_x_secc"()
RETURNS setof record AS $BODY$

    DECLARE
    dia1 int;dia2 int;dia3 int;dia4 int;dia5 int;dia6 int;dia7 int;dia8  int;dia9 int;dia10 int;
    dia11 int;dia12 int;dia13 int;dia14 int;dia15 int;dia16 int;dia17 int;dia18 int;dia19 int;dia20 int;dia21 int;dia22 int;dia23 int;dia24 int;dia25 int;
    contador INT := 0;
    num_columnas INT:= 15;
    BEGIN
    dia1:= 1;dia2:= 32;dia3:= 234 ;dia4:= 534;dia5:= 33;dia6:= 123;dia7:=   11;dia8:= 62;dia9:= 32;dia10:= 21;                
    dia11:= 0;dia11:= 0;dia13:= 0 ;dia14:= 0;dia15:= 0;dia16:= 0;dia17:=0; dia18:= 0;dia19:=0;dia20:= 0; dia21:= 0;dia22 := 0; dia23:= 0;dia24:= 0;dia25:= 0;

    WHILE contador<>5 LOOP
    IF num_columnas = 10 THEN
    RETURN query SELECT dia1,dia2,dia3,dia4,dia5,dia6,dia7,dia8,dia9,dia10;
    ELSE
    RETURN query SElECT dia11,dia12,dia13,dia14,dia15,dia16,dia17,dia18,dia19,dia20,dia21,dia22,dia23,dia24,dia25;
    END IF;        
    contador:=contador+1;
    END LOOP;
    RETURN;
    END$BODY$
LANGUAGE plpgsql

顯然我的setof記錄數據類型有問題,因為它返回以下錯誤

程序執行失敗

錯誤:sellamóunafunciónqueretorna un conjunto en un contexto que no puede aceptarlo語境:funciónPL/ pgSQL fn_tabla_mes_lab_x_secc()enlalínea14zh_cn返回查詢

時間:0,002s

請問你能幫幫我嗎?

如果未在執行該存儲函數的查詢中定義列名,則不能使用RETURNS SETOF record 你可以使用替代品,如

  1. RETURNS refcursor
  2. 使用臨時表和雙重查詢。

請訪問此處的答案重構PL / pgSQL函數以返回各種SELECT查詢的輸出

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM