TABLE居然也是資料型別
發現了一個很有意思的現象,居然TABLE也可以當作資料型別用。
用TABLE作為資料型別建表:
SQL> CREATE TABLE T_TABLE (ID TABLE);
表已建立。
SQL> DESC T_TABLE
名稱 是否為空? 型別
----------------------------------------------------------------- -------- --------------
ID RAW(16)
建表沒有報錯就很神奇了,在看看ID列的資料型別,居然是RAW(16)。
在STANDARD包中沒有找到對TABLE的定義,而且這個TABLE型別在PL/SQL中也是不可用的:
SQL> DECLARE
2 V_TAB TABLE;
3 BEGIN
4 INSERT INTO T_TABLE VALUES (V_TAB);
5 END;
6 /
V_TAB TABLE;
*
第 2 行出現錯誤:
ORA-06550: 第 2 行, 第 12 列:
PLS-00103: 出現符號 ";"在需要下列之一時:
(
查詢了一下DBA_TYPES檢視,倒是存在TABLE型別:
SQL> SELECT TYPE_NAME, TYPE_OID
2 FROM DBA_TYPES
3 WHERE TYPE_NAME = 'TABLE';
TYPE_NAME TYPE_OID
------------------------------ --------------------------------
TABLE 0000000000000000000000000000001E
可以發現TABLE型別的TYPE_OID的資料型別倒是RAW(16):
SQL> SELECT DATA_TYPE, DATA_LENGTH
2 FROM DBA_TAB_COLUMNS
3 WHERE TABLE_NAME = 'DBA_TYPES'
4 AND COLUMN_NAME = 'TYPE_OID'
5 AND WNER = 'SYS';
DATA_TYPE DATA_LENGTH
------------------------------ -----------
RAW 16
莫非是Oracle把這個型別作為TABLE的型別。
透過設定EVENTS跟蹤了一下,沒有找到任何有價值的東西,懷疑這部分是在Oracle的核心中透過C實現的,因此看不到具體是如何實現的。
不過這個SQL語句在9、10和11中都可以執行,不知道是Oracle有意為之,還是一個沒有被發現的bug。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-555730/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- js資料型別之基本資料型別和引用資料型別JS資料型別
- TABLE型別的使用型別
- 資料型別: 資料型別有哪些?資料型別
- 強資料型別和弱資料型別資料型別
- 區別值型別資料和引用型別資料型別
- 資料型別,型別轉換資料型別
- 資料型別資料型別
- 3. php資料型別、資料型別轉換PHP資料型別
- JAVA中基本資料型別和引用資料型別Java資料型別
- 基本資料型別與字串型別資料型別字串
- Java中的基本資料型別與引用資料型別Java資料型別
- MySQL基礎之----資料型別篇(常用資料型別)MySql資料型別
- Mysql資料庫學習(二):資料型別(數值型別 日期和時間型別 字串型別)MySql資料庫資料型別字串
- php資料型別PHP資料型別
- Symbol資料型別Symbol資料型別
- JavaScript - 資料型別JavaScript資料型別
- 資料型別2資料型別
- JavaScript 資料型別JavaScript資料型別
- js資料型別JS資料型別
- 1.2 資料型別資料型別
- 一、資料型別資料型別
- JavaScript資料型別JavaScript資料型別
- numpy資料型別資料型別
- Sqlite—資料型別SQLite資料型別
- NumPy 資料型別資料型別
- MYSQL 資料型別MySQL 資料型別
- Redis資料型別Redis資料型別
- protobuf資料型別資料型別
- mxArray資料型別資料型別
- Interval資料型別資料型別
- Oracle資料型別Oracle資料型別
- JavaScript: 資料型別JavaScript資料型別
- 基本資料型別資料型別
- WINDOWS資料型別Windows資料型別
- SQL 資料型別SQL資料型別
- Oracle 資料型別Oracle資料型別
- TypeScript資料型別TypeScript資料型別
- go 資料型別Go資料型別