使用时DUMP()
或使用时dbms_sql.define_column
两者都返回 Oracle 数据类型的 CODE。
是否有一个 MAP 将 Oracle 数据类型与其由 DUMP() 函数或 dbms_sql.define_column 功能返回的 Oracle 代码联系起来?
我正在寻找它来帮助测试以及查找自定义数据类型,例如嵌套表。我的一个表中存在嵌套表,并生成数据类型代码 109。如何查找与类型代码 109 关联的类型?下面是转储和 dbms_sql.define_column 的示例。
我必须假设这在数据库中可以进行查询,因为当我编写查询时,我使用列类型的“文本”名称而不是代码来定义列。那么,无论数据类型是“内置”还是“自定义”,文本(又名数据类型名称)存储在哪里?它一定在某个地方。
DUMP
SELECT
DUMP(to_date('15-JAN-18'),10,1,1) AS date_type
, DUMP(123,10,1,1) AS num_type
, DUMP('abc',10,1,1) AS var_type
FROM dual
;
转储输出
/* OUTPUT:
|
| "DATE_TYPE" "NUM_TYPE" "VAR_TYPE"
|--------------------|-------------------|------------------
| "Typ=13 Len=8: 226" "Typ=2 Len=3: 194" "Typ=96 Len=3: 97"
*/
DBMS_SQL.DEFINE_COLUMN
... some code above ...
-- Define columns:
FOR i IN 1..n_colcnt
LOOP
dbms_output.put_line(v_desctab(i).col_name ||': ' || v_desctab(i).col_type);
IF v_desctab(i).col_type = 2
THEN dbms_sql.DEFINE_COLUMN(n_curid, i, v_num_var);
ELSIF v_desctab(i).col_type = 12 THEN
dbms_sql.define_column(n_curid, i, v_date_var);
ELSE
dbms_sql.define_column(n_curid, i, v_name_var, 50);
END IF;
END LOOP;
... some code below ...
DBMS_SQL.DEFINE_COLUMN 输出 - 输出列名称及其数据类型代码。我想要文本。
QUERY_ID: 2
OTHER_ID: 2
ACTIVE: 1
QUERY_NAME: 1
QUERY_DESC: 1
QUERY_DEF: 112
QUERY_TYPE: 2
CREATED: 12
UPDATED: 12
CREATED_BY: 2
UPDATED_BY: 2
关于 Oracle 数据类型与其相应 ID 的映射,我所掌握的一件事是我继续引用的 Excel 文件。我希望我可以在 Oracle 中查询一些东西来给我我正在寻找的东西,而不是引用外部文档。
有THIS https://docs.oracle.com/cd/E11882_01/server.112/e41085/sqlqr06002.htm#SQLQR959链接,但是当我寻找自定义类型并且缺少 CODE 13 的文档时,这对我没有帮助。
这是有人整理的另一个非常好的数据类型映射:Oracle 类型代码映射 https://ellebaek.wordpress.com/2011/02/25/oracle-type-code-mappings/