Stored-Procedures

DB2 10.5 儲存過程問題

  • August 24, 2018

在嘗試一次呼叫多個語句時,我在使用 Data Studio 4.1.3 的 DB2 LUW 10.5 中的儲存過程出現問題。我已將問題縮小到處理分號 (;) 的方式。為了更輕鬆地進行故障排除,我創建了一個非常簡單的範例來說明我正在嘗試做的事情。

CREATE OR REPLACE PROCEDURE DB2ADMIN.sp_Test ()
   delete from "DB2ADMIN"."TestTable";
   insert into "DB2ADMIN"."TestTable"
   values('a','a','a');
   insert into "DB2ADMIN"."TestTable"
   values('b','b','b');
   select * from "DB2ADMIN"."TestTable";

如果我執行上面的程式碼,它可以完成,但是當我查看 sp 時,我只看到:

--<ScriptOptions statementTerminator=";"/>

CREATE OR REPLACE PROCEDURE DB2ADMIN.sp_Test ()
   delete from "DB2ADMIN"."TestTable";

它只讀取第一個分號然後停止。如果我刪除所有分號但最後一個分號,則不會創建該過程。我在現實生活中的程式碼要長得多,但行為相同。任何幫助或想法將不勝感激。

在儲存過程主體中,您必須使用分號來分隔語句。但是分號也是大多數客戶端中分隔語句的預設設置,因此您最終需要將客戶端的分隔符更改為其他內容(我使用@)。你最終會得到類似的東西:

create procedure cleanup()
begin
   delete from mytable;
   delete from myothertable;
end @

引用自:https://dba.stackexchange.com/questions/215814