24

2 つの OUT パラメータを使用して plpgsql 関数から値をフェッチしようとしていますが、問題があります。

これらは関数です:

CREATE OR REPLACE FUNCTION get_test(OUT x text, OUT y text)
AS $$
BEGIN
   x := 1;
   y := 2;
END;
$$  LANGUAGE plpgsql;
----------------------------------------------------------------

CREATE OR REPLACE FUNCTION get_test_read()
RETURNS VOID AS $$
DECLARE
   xx text;
   yy text;
BEGIN

   SELECT get_test() INTO xx, yy;
   
   RAISE INFO 'x: <%>', xx;
   RAISE INFO 'y: <%>', yy;

END;
$$  LANGUAGE plpgsql;

コマンドの出力:

get_test_read() を選択します。

情報: x: <(1,2)

情報: y: <>

get_test_read


したがって、両方の値が最初のパラメーターに渡されます。このような関数を呼び出す方法の例が見つかりません。

4

2 に答える 2

39

パラメータが 2 つあるため、関数はrecordOUTを返します。

FROMすべての値を取得するには、関数をデータのソースとして使用し、次のように句に入れる必要があります。

SELECT * FROM get_test() INTO xx, yy;
于 2012-05-14T13:37:02.450 に答える