小编Gei*_*tos的帖子

将 ROWTYPE 参数传递给 EXECUTE

我正在 Postgres 中开发一个函数,旨在为查询的每个记录恢复一组函数中包含的检查结果的值。只有这些函数之一会返回正确的值。这些函数有一个公共前缀“fn_condition_”,并接收一个“my_table”类型的对象作为参数。

由于进行检查的函数数量未知,我决定查阅 Postgres 目录,从表中pg_catalog.pg_proc搜索带有前缀“fn_condition_”的函数并使用EXECUTE.

我的问题是将参数传递给EXECUTE.

create or replace function test_conditions()
returns void as 
$$
declare
    v_record my_table%rowtype;
    v_function pg_proc%rowtype;    
begin 
    set search_path = 'pg_catalog';

    for v_record in (select * from my_table where id in (1,2,3)) loop
        for v_function in (
            SELECT  p.proname
            FROM    pg_namespace n
            JOIN    pg_proc p
            ON      p.pronamespace = n.oid
            WHERE   n.nspname = 'operacional'
            and p.proname like ('fn_condition\\_%')
            order by p.proname) 
        loop
         -- execute 'select ' || v_function.proname || '(' …
Run Code Online (Sandbox Code Playgroud)

postgresql dynamic-sql plpgsql postgresql-8.3

5
推荐指数
1
解决办法
2491
查看次数

标签 统计

dynamic-sql ×1

plpgsql ×1

postgresql ×1

postgresql-8.3 ×1