plpgsql:调用具有2个OUT参数的函数

mar*_*rco 20 postgresql plpgsql

我试图从带有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;
Run Code Online (Sandbox Code Playgroud)

命令的输出:

select get_test_read();

信息:x:<(1,2)

信息:y:<>

get_test_read


所以这两个值都转到第一个参数.我找不到一些关于如何调用这样的函数的例子.

vye*_*rov 35

由于你有2个OUT参数,你的函数将返回一个记录.

为了获得所有值,您应该使用函数作为数据源并将其放入如下的FROM子句中:

SELECT * FROM get_test() INTO xx, yy;
Run Code Online (Sandbox Code Playgroud)

  • 它给我错误如下: 错误:“进入”或附近的语法错误 (2认同)