plpgsql 関数から動的に生成された select ステートメントを返す必要があります。これは私がこれまでに持っているものです:
CREATE OR REPLACE FUNCTION qa_scf(cname character varying, tname character varying)
RETURNS text AS
$BODY$
BEGIN
return '* from ' ||tname|| 'where ' ||cname ||' != ''AL''';
end;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
呼び出し元は、バッチ ファイルから実行されました。
select qa_scf('state', 'testtable')
これは、リテラル テキスト "qa_scf * from testtable where state != 'AL'" を返します。このクエリを SQL バッチ ファイルから実行する必要がありますが、この関数に文字列を返してから SQL バッチで実行させるための正しい return ステートメントが見つからないようです。Postgres 9.0 を使用しています。