PLSQL Language Reference-PL/SQL子程式-過載子程式-只是數值資料型別不同的形參
只是數值資料型別不同的形參
如果形參只是在數值資料型別上不同,也是可以過載的。這個技術用於寫數學應用程式的介面,因為多個函式的版本可以使用相同的名稱,每個可以接受不同的數值型別。
為了避免給這樣的子程式傳遞引數時造成不必要的麻煩:
n 確保對於每個期待的引數的集合,希望的版本的子程式被呼叫。例,有過載的子程式可以接受binary_float和binary_double,如果你傳遞的是VARCHAR2型別的引數,’0.5’,則會呼叫哪個函式呢?
n 修飾數字字面量並使用轉換函式來明確希望的引數型別。例5.0f表示為binary_float, 5.0d為binary_double,或使用轉換函式to_binary_float, to_binary_double, to_number
PL/SQL以下面的順序來匹配數值引數:
PLS_INTEGER、NUMBER、BINARY_FLOAT、BINARY_DOUBLE
一個VARCHAR2的值,可以匹配NUMBER、BINARY_FLOAT和BINARY_DOUBLE
PL/SQL使用每一個匹配提供引數的子程式。例,SORT函式只有一個引數。它有多個過載可以接受NUMBER、BINARY_FLOAT和BINARY_DOUBLE。如果傳遞了一個PLS_INTEGER,則第一個匹配的過載函式為接受NUMBER引數的SORT函式。
如果PL/SQL試圖將一個引數轉換為其它型別,它會試圖將它轉換成更高的資料型別。例,
ATAN2函式接受2個相同型別的引數,如果傳遞的引數是不同型別,例如一個為PLS_INTEGER,另一個為BINARY_FLOAT,則PL/SQL試圖找到一個匹配,它的2個引數都使用高的資料型別。本例中是2個引數均為BINARY_FLOAT的ATAN2函式,因為PLS_INTEGER被轉換為更高的型別BINARY__FLOAT。
一個函式接受2個不同型別的引數,一個過載版本接受PLS_INTEGER和BINARY__FLOAT引數;另一個過載版本接收NUMBER和BINARY_DOUBLE引數,如果呼叫時傳遞了2個NUMBER引數,則PL/SQL會匹配到(PLS_INTEGER, BINARY_FLOAT)。因為BINARY_FLOAT比BINARY_DOUBLE更匹配NUMBER,而後PL/SQL向下看將NUMBER轉換成都PLS_INTEGER
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17013648/viewspace-1132823/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PLSQL Language Reference-PL/SQL子程式-過載子程式SQL
- PLSQL Language Reference-PL/SQL子程式-過載子程式-子程式過載錯誤SQL
- PLSQL Language Reference-PL/SQL子程式-過載子程式-不可以過載的子程式SQL
- PLSQL Language Reference-PL/SQL資料型別-SQL資料型別-不同的最值大小SQL資料型別
- PLSQL Language Reference-PL/SQL子程式-子程式引數-子程式引數傳遞方法SQL
- PLSQL Language Reference-PL/SQL資料型別-SQL資料型別-有限制的子型別SQL資料型別
- PLSQL Language Reference-PL/SQL子程式-子程式引數-實參的位置、名稱和混合標記SQL
- PLSQL Language Reference-PL/SQL子程式-子程式的副作用(side effects)SQLIDE
- PLSQL Language Reference-PL/SQL資料型別-SQL資料型別-使用者定義的PL/SQL子型別SQL資料型別
- PLSQL Language Reference-PL/SQL語言基礎-變數賦值-作為子程式引數來賦值SQL變數賦值
- PLSQL Language Reference-PL/SQL資料型別-SQL資料型別-LONG和LONG RAW變數SQL資料型別變數
- PLSQL Language Referenc-PL/SQL子程式-子程式呼叫SQL
- PLSQL Language Reference-PL/SQL資料型別-SQL資料型別-ROWID和UROWID變數SQL資料型別變數
- PLSQL Language Reference-PL/SQL資料型別-SQL資料型別-CHAR和VARCHAR2變數SQL資料型別變數
- PLSQL Language Referenc-PL/SQL子程式-使用子程式的原因SQL
- PLSQL Language Reference-PL/SQL子程式-PL/SQL函式結果快取(二)SQL函式快取
- PLSQL Language Referenc-SQL資料型別-子型別與基型別具有相同的資料型別家族SQL資料型別
- PLSQL Language Reference-SQL資料型別-PLS_INTEGER的子型別SIMPLE_INTEGERSQL資料型別
- 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語言基礎-變數賦值-對BOOLEAN變數賦值SQL變數賦值Boolean
- PLSQL Language Reference-PL/SQL語言基礎-變數賦值-使用SELECT INTO賦值SQL變數賦值
- PLSQL Language Reference-BOOLEAN型別-預定義PLS_INTEGER子型別SQLBoolean型別
- PLSQL Language Reference-PL/SQL語言基礎-變數賦值-使用賦值語句賦值SQL變數賦值
- PLSQL Language Referenc-PL/SQL靜態SQL-游標變數-游標變數作為子程式引數SQL變數
- PLSQL Language Reference-PL/SQL概覽-PL/SQL的優點SQL
- PLSQL Language Reference-PL/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概覽-PL/SQL語言基礎SQL
- PLSQL Language Reference-針對BINARY_FLOAT和BINARY_DOUBLE的額外PL/SQL子型別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 Reference-PL/SQL語言基礎-詞彙單元-識別符號引用SQL符號
- PLSQL Language Reference-PL/SQL語言基礎-詞彙單元-宣告SQL
- PLSQL Language Referenc-PL/SQL集合和記錄-集合型別SQL型別