如何访问postgresql中的记录元素?

时间:2016-03-24 11:47:34

标签: postgresql greenplum

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。

2 个答案:

答案 0 :(得分:5)

SELECT the_date, the_bool FROM util.retrec();

只需列出具有名称的字段,即应该有效。

答案 1 :(得分:0)

以下是有几种方法:

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上进行了测试

相关问题