PostgreSQL:如何将表/视图名称作为参数传递给 PostgreSQL 中的函数?

Mee*_*eem 0 postgresql dynamic-sql plpgsql

例如:我有一个名为“view1”的视图,其中包含“name”和“slno”列,现在我希望使用名为“f1”的函数显示它,如下所示:

- 功能

create or replace function f1(viewname varchar) 
returns table (name varchar,slno integer) as
$body$
begin
     return query
     select * from viewname;
end;
$body$
language plpgsql;
Run Code Online (Sandbox Code Playgroud)

Cra*_*ger 6

这是动态 SQL,因此您需要EXECUTE.

RETURN QUERY EXECUTE format('SELECT * FROM %I', "name");
Run Code Online (Sandbox Code Playgroud)

分开来说,这是一件很奇怪的事情。