簡體   English   中英

在一個存儲過程中調用多個存儲過程

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM