In Oracle dienen pipelined table functions dazu, PL/SQL collections als Tabellen zu verkleiden und darauf mit einfachem SQL zugreifen zu können. Hier ein kleines Beispiel dazu, wie man in postgres ein ähnliches Verhalten erreichen kann:
create or replace function f_pipeline_test(lines_limit int)
returns table (
table_schema text
, table_name text
) as
$func$
declare sqltext text = 'select table_schema::text, table_name::text
from information_schema.tables
where table_schema = ''pg_catalog''
limit ' || lines_limit;
begin
return query
execute sqltext;
end
$func$ language plpgsql;
select * from f_pipeline_test(5);
table_schema | table_name
-------------+--------------
pg_catalog | pg_statistic
pg_catalog | pg_type
pg_catalog | pg_roles
pg_catalog | pg_shadow
pg_catalog | pg_authid
(5 Zeilen)
Keine Kommentare:
Kommentar veröffentlichen