Oracle anydata資料型別
Oracle anydata資料型別:
SQL> CONN TEST/TEST
已連線。
SQL> DESC ANYDATA
METHOD
------
STATIC FUNCTION CONVERTNUMBER RETURNS ANYDATA
引數名稱 型別 輸入/輸出預設值?
------------------------------ ----------------------- ------ --------
NUM NUMBER IN
............
METHOD
------
MEMBER FUNCTION ACCESSBDOUBLE RETURNS BINARY_DOUBLE
METHOD
------
MEMBER FUNCTION ACCESSUROWID RETURNS ROWID
SQL> COL OBJECT_NAME FOR A30
SQL> SELECT object_name, object_type
2 FROM dba_objects
3 WHERE object_name like '%ANY%'
4* AND wner = 'SYS';
OBJECT_NAME OBJECT_TYPE
------------------------------ -------------------
/25dc84b4_SetDrawRectANY JAVA CLASS
/42700c8c_SetFillSpansANY JAVA CLASS
/69d73f42_SetDrawPolygonsANY JAVA CLASS
/acb51347_SetDrawLineANY JAVA CLASS
/c61bdc0a_SetFillRectANY JAVA CLASS
ANYDATA TYPE
ANYDATA TYPE BODY
ANYDATASET TYPE
ANYDATASET TYPE BODY
ANYTYPE TYPE
ANYTYPE TYPE BODY
OBJECT_NAME OBJECT_TYPE
------------------------------ -------------------
DBMS_ANYDATASET_LIB LIBRARY
DBMS_ANYDATA_LIB LIBRARY
DBMS_ANYTYPE_LIB LIBRARY
STREAMS$_ANYDATA_ARRAY TYPE
SYS$RAWTOANY FUNCTION
已選擇16行。
SQL> CREATE TABLE t (mycol sys.anyData);
CREATE TABLE t (mycol sys.anyData)
*
第 1 行出現錯誤:
ORA-00955: 名稱已由現有物件使用
SQL> DROP TABLE T;
表已刪除。
SQL> CREATE TABLE t (mycol sys.anyData);
表已建立。
SQL>
SQL> desc t
名稱 是否為空? 型別
----------------------------------------- -------- ----------------------------
MYCOL SYS.ANYDATA
SQL> INSERT INTO t VALUES (sys.anyData.convertNumber(5));
已建立 1 行。
SQL>
SQL> INSERT INTO t VALUES (sys.anyData.convertDate(SYSDATE));
已建立 1 行。
SQL>
SQL> INSERT INTO t VALUES (sys.anyData.convertVarchar2('hello world'));
已建立 1 行。
SQL>
SQL> COMMIT;
提交完成。
SQL> col typename format a20
SQL>
SQL> SELECT mytab.mycol.gettypeName() typeName
2 FROM t mytab;
TYPENAME
--------------------
SYS.NUMBER
SYS.DATE
SYS.VARCHAR2
--不能直接顯示anydata型別資料:
SQL> SELECT * FROM T;
MYCOL()
--------------------------------------------
ANYDATA()
ANYDATA()
ANYDATA()
SQL> col getdata format a20
--建立函式來顯示:
SQL> CREATE OR REPLACE FUNCTION getData(p_x IN sys.anyData)
2 RETURN VARCHAR2 IS
3 l_num NUMBER;
4 l_date DATE;
5 l_varchar2 VARCHAR2(4000);
6 BEGIN
7 CASE p_x.gettypeName
8 WHEN 'SYS.NUMBER' THEN
9 IF (p_x.getNumber(l_num) = dbms_types.success) THEN
10 l_varchar2 := l_num;
11 END IF;
12 WHEN 'SYS.DATE' THEN
13 IF (p_x.getDate(l_date) = dbms_types.success) THEN
14 l_varchar2 := l_date;
15 END IF;
16 WHEN 'SYS.VARCHAR2' THEN
17 IF (p_x.getVarchar2(l_varchar2) = dbms_types.success) THEN
18 NULL;
19 END IF;
20 ELSE
21 l_varchar2 := '** unknown **';
22 END CASE;
23
24 RETURN l_varchar2;
25 END getData;
26 /
函式已建立。
SQL>
SQL> SELECT getData(mycol) GETDATA FROM t;
GETDATA
--------------------
5
10-7月 -08
hello world
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/756652/viewspace-374848/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 資料型別Oracle資料型別
- 【轉】ORACLE資料型別Oracle資料型別
- ORACLE NUMBER資料型別Oracle資料型別
- Oracle資料型別對應Java型別Oracle資料型別Java
- Oracle的number資料型別Oracle資料型別
- Oracle OCP(19):資料型別Oracle資料型別
- Oracle字串資料型別簡述Oracle字串資料型別
- Oracle和sqlserver資料型別對應OracleSQLServer資料型別
- Oracle基本資料型別儲存格式淺析——RAW型別Oracle資料型別
- 資料型別與函式索引-Oracle篇資料型別函式索引Oracle
- js資料型別之基本資料型別和引用資料型別JS資料型別
- 資料型別: 資料型別有哪些?資料型別
- 1.1. Oracle 資料庫使用者型別Oracle資料庫型別
- [20191219]oracle timestamp資料型別的儲存.txtOracle資料型別
- 區別值型別資料和引用型別資料型別
- 資料型別,型別轉換資料型別
- 資料型別資料型別
- JAVA中基本資料型別和引用資料型別Java資料型別
- 3. php資料型別、資料型別轉換PHP資料型別
- [20241009]oracle timestamp with time zone資料型別的儲存.txtOracle資料型別
- oracle資料庫事務transaction 不同的鎖lock型別Oracle資料庫型別
- Oracle 11G DBMS_REDEFINITION修改表資料型別Oracle資料型別
- Oracle BLOB型別的資料如何檢視和下載?Oracle型別
- 基本資料型別與字串型別資料型別字串
- ORACLE日期型別Oracle型別
- MySQL基礎之----資料型別篇(常用資料型別)MySql資料型別
- Java中的基本資料型別與引用資料型別Java資料型別
- Oracle blob型別資料轉換成 base64編碼Oracle型別
- 基本資料型別資料型別
- MySQL資料型別MySql資料型別
- [Mysql]資料型別MySql資料型別
- go 資料型別Go資料型別
- NumPy 資料型別資料型別
- SQL 資料型別SQL資料型別
- Java資料型別Java資料型別
- Python資料型別Python資料型別
- TypeScript資料型別TypeScript資料型別
- MYSQL 資料型別MySQL 資料型別