有谁知道如何将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;
有谁知道如何完成这样的事情(例如,根据另一个函数的结果定义一个函数体)?谢谢,
答案 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;