[英]Call multiple stored procedures within a stored procedure
我想創建一個存儲過程,它調用多個其他存儲過程並將輸出參數保存到變量中,因為每個存儲過程的輸出都是下一個存儲過程的輸入參數。
我的代碼如下所示:
CREATE PROCEDURE sa.sp_step0(inout name text)
LANGUAGE plpgsql
AS $$
DECLARE
id text;
run text;
tables_step2 text[];
tables_step3 text[];
tables_step4 text[];
table_step5 text;
BEGIN
call sa.sp_step1(model_name) insert into id,run;
call sa.sp_step2(id,run) insert into id,run,tables_step2;
call sa.sp_step3(id,run,tables_step2) insert into id,run,tables_step3;
call sa.sp_step4(id,run,tables_step3) insert into id,run,tables_step4;
call sa.sp_step5(id,run,tables_step4) insert into id,run,tables_step5;
return;
end
$$;
我收到以下錯誤:
SQL 錯誤 [42601]:錯誤:“插入”處或附近的語法錯誤¶
在我看來,您好像在使用其他數據庫產品的語法。
要在 PostgreSQL 中執行您要執行的操作,您需要像這樣聲明您的過程:
CREATE PROCEDURE sp_step1(IN model_name TEXT, INOUT id TEXT, INOUT run TEXT)
LANGUAGE plpgsql
AS...
然后將您的程序稱為
call sa.sp_step1(model_name, id, run);
call sa.sp_step2(id, run, tables_step2);
call sa.sp_step3(id, run, tables_step2, tables_step3);
...
伙計,當我找出自己的錯誤並在 www 中幫助其他人時,我喜歡它....
基本上,如果要將存儲過程的輸出保存到變量中,可以執行以下操作:
execute ('sa.sp_step1(''' || model_name|| ''')') into id,run;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.