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
したがって、両方の値が最初のパラメーターに移動します。このような関数を呼び出す方法の例が見つかりません。
2つのOUT
パラメータがあるため、関数は record を返します。
すべての値を取得するには、データのソースとして関数を使用し、次のようにFROM
句に配置する必要があります。
SELECT * FROM get_test() INTO xx, yy;