如何將存儲在記錄類型變量中的查詢結果用於同一存儲函數中的另一個查詢?我使用Postgres 9.4.4。如何在plpgsql中使用記錄類型變量?
有了這樣的表:
create table test (id int, tags text[]);
insert into test values (1,'{a,b,c}'),
(2,'{c,d,e}');
我寫了一個函數(簡體)象下面這樣:
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
$$;
...但沒有奏效:
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來達到這個目的。 –