同じストアド・ファンクション内の別の問合せのレコード型変数に問合せ結果を格納するにはどうすればよいですか?私はPostgres 9.4.4を使用します。このようなテーブルでplpgsqlでレコード型変数を使用する方法は?
:
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
$$;
...しかし、うまくいきませんでした:
create table test (id int, tags text[]);
insert into test values (1,'{a,b,c}'),
(2,'{c,d,e}');
私は以下のように(単純化)関数を書いた
select func('test');
ERROR: 42P01: relation "t" does not exist LINE 1: SELECT count(*) FROM t ^ QUERY: SELECT count(*) FROM t CONTEXT: PL/pgSQL function func(regclass) line 7 at SQL statement LOCATION: parserOpenTable, parse_relation.c:986
を一種のため、そんなにアーウィンをありがとうと詳細な答え。今やその理由は私にはとても分かります。私はその目的のためにCTEを使用します。 –