PostgreSQL v8.2(Greenplum)
CREATE OR REPLACE FUNCTION util.retrec(OUT p1 date, OUT p2 boolean)
RETURNS RECORD
AS
$BODY$
DECLARE
BEGIN
p1 := current_date;
p2 := true;
RETURN;
END;
$BODY$
LANGUAGE plpgsql VOLATILE;
SELECT util.retrec();
这将返回(2016-03-24,t)
-如何分别提取这两个值?
我可以用SELECT p1,p2 FROM util.retrec();
交互完成,但如何在过程中将这两个值分配给两个变量?我试过这个:
SELECT util.retrec() INTO r1, r2;
运气不好,这试图将记录分配给r1。
SELECT the_date, the_bool FROM util.retrec();
只需列出字段及其名称,就可以了。
以下是几种方法:
do $$
declare
r1 date;
r2 boolean;
r record;
begin
r := retrec();
raise info '%', r;
raise info '%', r.p1;
raise info '%', r.p2;
select * into r from retrec();
raise info '%', r;
raise info '%', r.p1;
raise info '%', r.p2;
select * into r1, r2 from retrec();
raise info '%, %', r1, r2;
end; $$ language plpgsql;
请注意,它是在PostgreSQL 9.5 上测试的