PLSQL Language Reference-PL/SQL子程式-過載子程式-子程式過載錯誤
子程式過載錯誤
一但PL/SQL編譯器判斷出它不能確定呼叫哪個子程式時,就會捕獲過載錯誤。
當子程式具有完全相同的頭部,則當編譯子程式本身或宣告它們的包規範時會捕獲過載錯誤。
其它情況就是當你編譯模稜兩可的子程式呼叫時會捕獲過載錯誤。
--引發編譯時錯誤 CREATE OR REPLACE PACKAGE pkg1 IS PROCEDURE s (p VARCHAR2); PROCEDURE s (p VARCHAR2); END pkg1;
--編譯時成功,編譯呼叫的程式時出錯 CREATE OR REPLACE PACKAGE pkg2 IS SUBTYPE t1 IS VARCHAR2(10); SUBTYPE t2 IS VARCHAR2(10); PROCEDURE s (p t1); PROCEDURE s (p t2); END pkg2;
CREATE OR REPLACE PROCEDURE p IS a pkg2.t1 := 'a'; BEGIN pkg2.s(a); -- 捕獲錯誤 END p;
--修改函式的過載,讓s過程的形參名不一樣 CREATE OR REPLACE PACKAGE pkg2 IS SUBTYPE t1 IS VARCHAR2(10); SUBTYPE t2 IS VARCHAR2(10); PROCEDURE s (p1 t1); PROCEDURE s (p2 t2); END pkg2;
--呼叫方式也改一下,基於名字 CREATE OR REPLACE PROCEDURE p IS a pkg2.t1 := 'a'; BEGIN pkg2.s(p1=>a); -- 不會產生編譯錯誤 END p;
--沒有違背過載規則 CREATE OR REPLACE PACKAGE pkg3 IS PROCEDURE s (p1 VARCHAR2); PROCEDURE s (p1 VARCHAR2, p2 VARCHAR2 := 'p2'); END pkg3; --會產生編譯錯誤 CREATE OR REPLACE PROCEDURE p IS a1 VARCHAR2(10) := 'a1'; a2 VARCHAR2(10) := 'a2'; BEGIN pkg3.s(p1=>a1, p2=>a2); -- 沒有錯誤 pkg3.s(p1=>a1); -- 會引起錯誤,不確定是呼叫哪一個 END p; |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17013648/viewspace-1132828/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PLSQL Language Reference-PL/SQL子程式-過載子程式SQL
- PLSQL Language Reference-PL/SQL子程式-過載子程式-不可以過載的子程式SQL
- PLSQL Language Reference-PL/SQL子程式-過載子程式-只是數值資料型別不同的形參SQL資料型別
- PLSQL Language Reference-PL/SQL子程式-子程式引數-子程式引數傳遞方法SQL
- PLSQL Language Reference-PL/SQL子程式-子程式的副作用(side effects)SQLIDE
- PLSQL Language Referenc-PL/SQL子程式-子程式呼叫SQL
- PLSQL Language Referenc-PL/SQL子程式-使用子程式的原因SQL
- PLSQL Language Reference-PL/SQL子程式-子程式引數-實參的位置、名稱和混合標記SQL
- PLSQL Language Reference-PL/SQL子程式-PL/SQL函式結果快取(二)SQL函式快取
- PLSQL Language Referenc-PL/SQL子程式-前向宣告SQL
- PLSQL Language Referenc-PL/SQL子程式-巢狀、包和獨立的儲存子程式SQL巢狀
- PLSQL Language Reference-PL/SQL子程式-PL/SQL函式結果快取-開啟函式結果快取SQL函式快取
- PLSQL Language Reference-PL/SQL語言基礎-變數賦值-作為子程式引數來賦值SQL變數賦值
- PLSQL Language Reference-PL/SQL資料型別-SQL資料型別-有限制的子型別SQL資料型別
- PLSQL Language Referenc-PL/SQL動態SQL-練習:在動態SQL塊中呼叫子程式。SQL
- VBA過程―子程式與函式(轉)函式
- 第二十篇:在子程式中裝載新的程式
- PLSQL Language Reference-PL/SQL資料型別-SQL資料型別-使用者定義的PL/SQL子型別SQL資料型別
- Qt啟動子程式,子程式關閉時通知主程式,實現主程式對子程式的管理QT
- PLSQL Language Referenc-PL/SQL靜態SQL-游標變數-游標變數作為子程式引數SQL變數
- fork、父程式和子程式
- 偵錯程式是個大騙子!
- PLSQL Language Reference-PL/SQL概覽-PL/SQL架構SQL架構
- python多程式與子程式Python
- PL/SQL 10 管理使用者子程式SQL
- 字串的過載程式字串
- 子程式、孤兒程式,殭屍程式, init程式
- 電子程式單-萊斯
- 4,子程式(筆記)筆記
- PLSQL Language Reference-PL/SQL概覽-PL/SQL的優點SQL
- 西門子程式設計軟體有哪些?如何實現PLC遠端上下載程式和程式設計除錯?程式設計除錯
- 【iBoard 電子學堂教程】【uCGUI 例程及程式碼包下載】GUI
- PLSQL Language Reference-PL/SQL概覽-PL/SQL語言基礎SQL
- 程式設計師強子程式設計師
- 子程式等待父程式退出及fork使用
- python的子子孫孫(變種程式語言)Python
- PLSQL Language Reference-PL/SQL新功能-版本11.1 新功能SQL
- PLSQL Language Reference-PL/SQL新功能-版本11.2.0.1新功能SQL