我在PostgreSQL的這個功能:如何使用參數創建函數的VIEW?
CREATE OR REPLACE FUNCTION func1(a integer, b timestamp, c integer[])
RETURNS SETOF typ_new AS
$BODY$
declare
begin
CREATE OR REPLACE VIEW newView as (select * from func2($1,$2,$3));
end;
$BODY$
LANGUAGE plpgsql VOLATILE
func2
也返回SETOF typ_new
,使他們相互兼容。
當運行它,我得到一個錯誤:ERROR: there is no parameter $1
如果我改變$1
參數名a
那麼錯誤更改 ERROR: column "a" does not exist
我也試過動態SQL:
sqlstr ='CREATE OR REPLACE VIEW newView (columns...) as
(select * from func2('||$1||','||$2||','||$3||'))';
execute sqlstr;
但不起作用,因爲$3
是integer[]
和||
不能使用數組。
我該如何解決這個問題?
您似乎在嘗試執行動態SQL;看看PL/PgSQL的'EXECUTE'和'format'參數。詳情請參閱許多相關答案。 –
@Craig,查看文章編輯 – John
也許最好是創建'VIEW as $ BODY $'並從該視圖中選擇函數? – Smileek