在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类型可能不可用。