这是我想要做的一个简化的例子。
我有一个函数,它根据整数 id 的输入以文本形式返回一些有效的 sql 语句。这些 sql 语句始终返回布尔值。
create function query_func(_id bigint) returns text as $$
select sql from my_table_of_sql_statements where id = _id;
$$ language sql;
我想根据输入 id 值执行这些 sql 语句,并将结果作为标量函数返回。
create or replace function test.ufn_id_exists (_id bigint) returns boolean as $$
declare sql text;
res bool;
begin
sql = query_func(_id);
execute sql into res;
return res;
end;
$$
我的问题是:有没有办法重写不需要中间变量"res"或"sql"的第二个函数?
你可以侥幸使用sql
变量,但我认为没有办法摆脱结果变量:
create or replace function test.ufn_id_exists (_id bigint) returns boolean as $$
declare res bool;
begin
execute query_func(_id) into res;
return res;
end;
$$