在Oracle中執行Stored Procedure,我們可以使用EXECUTE
(or EXEC
)或CALL
指令。
EXECUTE my_procedure('hello world');
-- or
CALL my_procedure('hello world');
EXECUTE
和CALL
指令雖然都可執行Stored Procedure,但基本有點小差異:
EXECUTE
是SQL*Plus指令,而CALL
是標準SQL指令,因此CALL
在任何資料庫軟體都可使用,而EXECUTE
必須操作軟體支援才可使用。CALL
所執行的SP參數必須是標準的Oracle資料型態(datatype),不支援PL/SQL才有的資料型態,但EXECUTE
支援。EXECUTE
不僅可執行SP,還可執行PL/SQL statement,EXECUTE
同等於把其引數放在匿名的PL/SQL block中...EXECUTE my_procedure('hello world');
- 如果SP不帶參數,則用
CALL
執行時後面要加上括弧,但EXECUTE
不用,例如
如果用EXECUTE mysp; -- or CALL mysp();
CALL
呼叫不帶參數的SP但後面沒加括號,則會發生錯誤:
ORA-06576: 不是正確的函數或程序名稱
ORA-06576: not a valid function or procedure name
如果覺得文章有幫助的話還幫忙點個Google廣告,感恩。
參考:
沒有留言:
張貼留言