web-dev-qa-db-ja.com

plpgsql:2つのOUTパラメータを使用して関数を呼び出す

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


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

20
marco

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

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

SELECT * FROM get_test() INTO xx, yy;
33
vyegorov