PostgreSQL:在 plpgsql 函数中访问 RECORD 类型的数据
PostgreSQL: Accessing data of RECORD type in a plpgsql function
这是我的第一个函数:
CREATE FUNCTION func1(INOUT a integer,OUT b integer, OUT c float, OUT d integer,OUT e decimal)
AS $BODY$
DECLARE
BEGIN
.
.
.
END
$BODY$
LANGUAGE plpgsql VOLATILE
输出为:
$ SELECT * FROM func1(242);
a | b | c | d | e
--+--+--+--+---
242 | 5 | 7.5 | 15 | 1.2208
这是第二个函数:
CREATE FUNCTION func2()
AS $BODY$
DECLARE
d RECORD;
BEGIN
EXECUTE 'SELECT * FROM func1(242)' INTO d;
raise notice 'arr: %', d;. -– output is-> NOTICE: arr: (242,5,7.5,15,1.2208)
--HERE I want access to a,b,....
.
.
END
$BODY$
LANGUAGE plpgsql VOLATILE
如何分别访问 func2 中的 a、b、c、d 和 e 变量。
这是一种解决方案:
FOR d in EXECUTE 'SELECT * FROM func1(242)'
LOOP
--here you can access them, or assign them to a local variable
raise notice 'a:%, b:%, c:%, d:%, e:%', d.a, d.b, d.c, d.d, d.d, d.e;
END LOOP;
这是我的第一个函数:
CREATE FUNCTION func1(INOUT a integer,OUT b integer, OUT c float, OUT d integer,OUT e decimal)
AS $BODY$
DECLARE
BEGIN
.
.
.
END
$BODY$
LANGUAGE plpgsql VOLATILE
输出为:
$ SELECT * FROM func1(242);
a | b | c | d | e
--+--+--+--+---242 | 5 | 7.5 | 15 | 1.2208
这是第二个函数:
CREATE FUNCTION func2()
AS $BODY$
DECLARE
d RECORD;
BEGIN
EXECUTE 'SELECT * FROM func1(242)' INTO d;
raise notice 'arr: %', d;. -– output is-> NOTICE: arr: (242,5,7.5,15,1.2208)
--HERE I want access to a,b,....
.
.
END
$BODY$
LANGUAGE plpgsql VOLATILE
如何分别访问 func2 中的 a、b、c、d 和 e 变量。
这是一种解决方案:
FOR d in EXECUTE 'SELECT * FROM func1(242)'
LOOP
--here you can access them, or assign them to a local variable
raise notice 'a:%, b:%, c:%, d:%, e:%', d.a, d.b, d.c, d.d, d.d, d.e;
END LOOP;