在Oracle數據庫中,ANYDATA類型是一個用于存儲任意數據類型的通用容器
CREATE TABLE anydata_table (
id NUMBER PRIMARY KEY,
data ANYDATA
);
INSERT INTO anydata_table (id, data) VALUES (1, SYS.ANYDATA.ConvertVarchar2('Hello, World!'));
INSERT INTO anydata_table (id, data) VALUES (2, SYS.ANYDATA.ConvertNumber(42));
INSERT INTO anydata_table (id, data) VALUES (3, SYS.ANYDATA.ConvertDate(SYSDATE));
COMMIT;
SELECT
id,
CASE
WHEN data.GetTypeName() = 'SYS.VARCHAR2' THEN data.AccessVarchar2()
WHEN data.GetTypeName() = 'SYS.NUMBER' THEN TO_CHAR(data.AccessNumber())
WHEN data.GetTypeName() = 'SYS.DATE' THEN TO_CHAR(data.AccessDate(), 'YYYY-MM-DD HH24:MI:SS')
ELSE 'Unknown Type'
END AS data
FROM anydata_table;
這個查詢將返回以下結果:
ID | DATA
----------
1 | Hello, World!
2 | 42
3 | 2022-07-06 15:30:00 (取決于實際日期和時間)
請注意,這個示例僅適用于Oracle 12c或更高版本。在較早版本的Oracle中,ANYDATA類型可能不可用。