PLSQL Language Reference-PL/SQL子程式-子程式引數-實參的位置、名稱和混合標記
0.1.1 實參的位置、名稱和混合標記
在呼叫子程式時,可以使用位置、名稱或混合標記來指定實參。
位置 |
名稱 |
混合 |
按形參宣告的順序指定實參 |
可以按任何順序指定實參 formal => actual |
以位置標記開始,對其它引數使用名稱標記 |
可以省略尾部的可選引數 |
可以省略任何可選引數 |
在位置標記中可以省略尾部的可選引數,在名稱標記中可以省略任何可選引數 |
如果按錯誤的順序指定了實參,尤其是實參為字面量,則會引起很難發現的問題 |
實參沒有錯誤的順序 |
在位置標記中,如果按錯誤的順序指定了實參,尤其是實參為字面量,則會引起很難發現的問題 |
如果形參列表改變了,則子程式呼叫必須改變,除非列表中只是增加了新的尾部可選引數。 |
只有當引數列表增加了新的引數時,子程式呼叫才需要改變。 |
對於形參列表的改變,可能需要改變位置標記 |
|
當呼叫由它人定義或維護的子程式時,建議採用這種方式 |
當呼叫有必須引數和可選引數的子程式,且必須指定少數的幾個可選引數的時候,很方便。 |
DECLARE emp_num NUMBER(6) := 120; bonus NUMBER(6) := 50;
PROCEDURE raise_salary ( emp_id NUMBER, amount NUMBER) IS BEGIN UPDATE employees SET salary = salary + amount WHERE employee_id = emp_id; END raise_salary;
BEGIN -- 等效的呼叫 raise_salary(emp_num, bonus); -- 按位置 raise_salary(amount => bonus, emp_id => emp_num); -- 按名稱 raise_salary(emp_id => emp_num, amount => bonus); -- 按名稱 raise_salary(emp_num, amount => bonus); -- 混合 END; / |
CREATE OR REPLACE FUNCTION compute_bonus ( emp_id NUMBER, bonus NUMBER ) RETURN NUMBER IS emp_sal NUMBER; BEGIN SELECT salary INTO emp_sal FROM employees WHERE employee_id = emp_id;
RETURN emp_sal + bonus; END compute_bonus; / SELECT compute_bonus(120, 50) FROM DUAL; -- 按位置 SELECT compute_bonus(bonus => 50, emp_id => 120) FROM DUAL; -- 按名稱 SELECT compute_bonus(120, bonus => 50) FROM DUAL; -- 混合 |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17013648/viewspace-1132818/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PLSQL Language Reference-PL/SQL子程式-子程式引數-子程式引數傳遞方法SQL
- PLSQL Language Reference-PL/SQL子程式-過載子程式SQL
- PLSQL Language Reference-PL/SQL子程式-子程式的副作用(side effects)SQLIDE
- PLSQL Language Reference-PL/SQL子程式-過載子程式-只是數值資料型別不同的形參SQL資料型別
- PLSQL Language Reference-PL/SQL子程式-過載子程式-子程式過載錯誤SQL
- PLSQL Language Reference-PL/SQL子程式-過載子程式-不可以過載的子程式SQL
- 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-游標變數-游標變數作為子程式引數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資料型別-有限制的子型別SQL資料型別
- PLSQL Language Reference-PL/SQL概覽-PL/SQL的優點SQL
- PLSQL Language Reference-PL/SQL概覽-PL/SQL架構SQL架構
- PLSQL Language Reference-PL/SQL資料型別-SQL資料型別-使用者定義的PL/SQL子型別SQL資料型別
- PLSQL Language Referenc-PL/SQL動態SQL-練習:在動態SQL塊中呼叫子程式。SQL
- PLSQL Language Reference-PL/SQL概覽-PL/SQL的主要功能SQL
- PLSQL Language Reference-PL/SQL資料型別-SQL資料型別-LONG和LONG RAW變數SQL資料型別變數
- PLSQL Language Reference-PL/SQL概覽-PL/SQL語言基礎SQL
- 鉤子裡找不到新增外掛名稱的位置
- PLSQL Language Reference-PL/SQL資料型別-SQL資料型別-ROWID和UROWID變數SQL資料型別變數
- PLSQL Language Reference-PL/SQL資料型別-SQL資料型別-CHAR和VARCHAR2變數SQL資料型別變數
- PLSQL Language Reference-PL/SQL新功能-版本11.1 新功能SQL
- PLSQL Language Reference-PL/SQL新功能-版本11.2.0.1新功能SQL
- PLSQL Language Reference-PL/SQL新功能-版本11.2.0.2新功能SQL
- PLSQL Language Referenc-PL/SQL動態SQL-動態SQL中重複的佔位符名名稱SQL
- PLSQL Language Reference-PL/SQL語言基礎-詞彙單元-宣告SQL
- PLSQL Language Referenc-PL/SQL靜態SQL-游標變數SQL變數
- PLSQL Language Reference-PL/SQL語言基礎-變數賦值-對BOOLEAN變數賦值SQL變數賦值Boolean
- PLSQL Language Referenc-PL/SQL靜態SQL-游標變數-建立游標變數SQL變數
- PLSQL Language Reference-PL/SQL語言基礎-變數賦值-使用SELECT INTO賦值SQL變數賦值
- PLSQL Language Reference-PL/SQL語言基礎-表示式-BOOLEAN表示式SQLBoolean
- PLSQL Language Reference-PL/SQL語言基礎-表示式-短路計算SQL
- PLSQL Language Reference-PL/SQL語言基礎-詞彙單元-字面量SQL
- PLSQL Language Referenc-PL/SQL靜態SQL-游標變數-開啟和關閉游標變數SQL變數