Postgres返回标量,它是动态SQL查询的结果

时间:2019-04-23 10:07:21

标签: postgresql

这是我要执行的操作的简化示例。

我有一个函数,可以根据整数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'的第二个函数?

1 个答案:

答案 0 :(得分:1)

您可以使用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;
$$