Postgres 返回标量,这是动态 sql 查询的结果



这是我想要做的一个简化的例子。

我有一个函数,它根据整数 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;
$$

最新更新