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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JavaSE 形參和返回值(引用型別)Java型別
- FLOAT:浮點數值資料的大致數值資料型別資料型別
- XSD 數值資料型別資料型別
- PL/SQL基本結構---PLSQL複合型別---表型別變數tableSQL型別變數
- js基本語法之 值型別(資料型別)(變數型別)JS資料型別變數
- SQL 資料型別SQL資料型別
- Qt啟動子程式,子程式關閉時通知主程式,實現主程式對子程式的管理QT
- 【SQL】18 SQL NULL 函式、SQL 通用資料型別、SQL 用於各種資料庫的資料型別SQLNull函式資料型別資料庫
- 0-4 Python 基礎資料型別-數值型別Python資料型別
- 區別值型別資料和引用型別資料型別
- Python中的鴨子型別Python型別
- 方法的過載、可變形參的方法、方法的引數值傳遞機制、遞迴方法遞迴
- 判斷值的資料型別資料型別
- PLC程式設計—資料型別C程式程式設計資料型別
- MySql資料庫 數值型別的顯示寬度MySql資料庫型別
- Python程式設計常用的資料型別Python程式設計資料型別
- 004.01 不同 Python 資料型別的搜尋Python資料型別
- Python 語言中的 “鴨子型別”Python型別
- SQL 常見資料型別SQL資料型別
- SQL Server-資料型別SQLServer資料型別
- 基於matlab的車牌識別(含子程式)Matlab
- 分享Flask電子書PDF及程式碼+資料Flask
- SQL教程——常見的資料型別SQL資料型別
- fork、父程式和子程式
- 譯-MYSQL5.7參考手冊--數值型別概述MySql型別
- 數值的擴充套件方法以及新增資料型別BigInt套件資料型別
- Python 多程式的自定義共享資料型別Python資料型別
- [譯] 值型別導向程式設計型別程式設計
- TypeScript 數值型別TypeScript型別
- Python數值型別Python型別
- SQL Server日期資料型別DATE的使用SQLServer資料型別
- 譯-MYSQL5.7參考手冊--11.1.1數值型別概述MySql型別
- mysql中數值型資料有哪兩個類別?MySql
- python不同資料型別之間的區別有什麼?Python資料型別
- SQL SERVER數值型別int、bigint、smallint 和 tinyint範圍SQLServer型別
- 用簡單的程式碼描述Angular父元件、子元件傳值Angular元件
- 子程式、孤兒程式,殭屍程式, init程式
- 程式碼塊,資料型別的相互轉換,集合資料型別
- SSIS 資料型別 第二篇:變數的資料型別資料型別變數