小编SG.*_*shi的帖子

如何在plpgsql中使用记录类型变量?

如何将存储在记录类型变量中的查询结果用于同一存储函数中的另一个查询?我使用Postgres 9.4.4.

用这样的表:

create table test (id int, tags text[]);
insert into test values (1,'{a,b,c}'),
                        (2,'{c,d,e}');
Run Code Online (Sandbox Code Playgroud)

我写了一个函数(简化),如下所示:

CREATE OR REPLACE FUNCTION func(_tbl regclass)
RETURNS TABLE (t TEXT[], e TEXT[])
LANGUAGE plpgsql AS $$
DECLARE
  t RECORD;
  c INT;
BEGIN
  EXECUTE format('SELECT id, tags FROM %s', _tbl) INTO t;
  SELECT count(*) FROM t INTO c;
  RAISE NOTICE '% results', c;
  SELECT * FROM t;
END
$$;
Run Code Online (Sandbox Code Playgroud)

......但没有奏效:

select func('test');
Run Code Online (Sandbox Code Playgroud)
ERROR:  42P01: relation "t" does not exist
LINE 1: SELECT count(*) FROM …
Run Code Online (Sandbox Code Playgroud)

postgresql variables function plpgsql table-variable

16
推荐指数
1
解决办法
3万
查看次数