从另一个函数的结果创建PLPGSQL函数

时间:2014-05-13 02:40:54

标签: postgresql triggers plpgsql postgresql-9.3

有谁知道如何将PLPGSQL函数的主体设置为另一个函数的结果文本?例如,这是我尝试过的:

CREATE FUNCTION "Foo"() RETURNS TEXT AS $$
    BEGIN
        RETURN 'BEGIN END;';
    END;
$$ LANGUAGE PLPGSQL;

CREATE FUNCTION "Bar"() RETURNS TRIGGER AS "Foo"() LANGUAGE PLPGSQL;

我想要的是" Bar"要创建它,它等同于以下内容:

CREATE FUNCTION "Bar"() RETURNS TRIGGER AS $$
    BEGIN END;
$$ LANGUAGE PLPGSQL;

有谁知道如何完成这样的事情(例如,根据另一个函数的结果定义一个函数体)?谢谢,

1 个答案:

答案 0 :(得分:1)

感谢Craig Ringer提出的建议。这是我最终编写的代码,用于生成函数:

CREATE FUNCTION "Foo"() RETURNS VOID AS $$
    BEGIN
        EXECUTE
            'CREATE FUNCTION ' || QUOTE_IDENT('Bar') || '() RETURNS TRIGGER AS $a$' || chr(10) ||
            'BEGIN' || chr(10) ||
            'END;' || chr(10) ||
            '$a$ LANGUAGE PLPGSQL;';
    END;
$$ LANGUAGE PLPGSQL;
相关问题