首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Oracle如何将数据类型映射到代码/IDs转储和dbms_sql.define_column生成数据类型代码

Oracle如何将数据类型映射到代码/IDs转储和dbms_sql.define_column生成数据类型代码
EN

Stack Overflow用户
提问于 2019-05-31 06:42:34
回答 3查看 1.1K关注 0票数 0

是否有一个映射将Oracle数据类型绑定到由DUMP()函数或dbms_sql.define_column特性返回的其Oracle代码?

我希望这有助于测试以及定位自定义数据类型,如嵌套表。下面是转储和dbms_sql.define_column的示例。

我必须假设这在数据库中可用于查询,因为当我编写查询时,我使用列类型的'TEXT‘名称定义列,而不是使用Code。那么,我的数据类型的文本和名称存储在哪里,无论它们是“内置”还是“自定义”?它一定在某个地方。

转储

代码语言:javascript
复制
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
;

转储输出

代码语言:javascript
复制
/* 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

代码语言:javascript
复制
... 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 ...

我想要文本代替。

代码语言:javascript
复制
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数据类型到其相应I的映射,我有一件事是我继续引用的excel文件。我希望有一些我可以在Oracle中查询的东西来给我提供我正在寻找的东西,而不是引用外部文档。

THIS链接,但是当我寻找自定义类型时,这对我没有帮助,它缺少代码13的文档。

这是另一个非常好的数据类型映射:Oracle Type Code Mappings

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-06-01 01:35:06

使用从这个链接(Oracle Type Code Mappings)获得的数据,我决定创建自己的表,并用Oracle数据类型填充它,将Oracle类型代码映射回数据类型的“文本”。

也许有人会出现,并展示了一种方法,只需根据代码获得类型的名称,而不需要这种自定义的解决办法。现在,这将是我接受的答案,因为它让我尽可能地接近我首先需要的东西。其他答案肯定会帮助我做到这一点。不幸的是,它仍然不能拉回自定义类型的实际名称,返回的代码为109。

代码语言:javascript
复制
CREATE TABLE oracle_data_types
(
  Data_Type                 VARCHAR2(100 CHAR),
  Uniform_Type_Code         NUMBER(10),
  Oracle_Doc                NUMBER(10),
  DBMS_SQL                  NUMBER(10),
  DBMS_TYPES_TYPECODE_PERC  VARCHAR2(100 CHAR),
  JDBC_java_sql_Types       VARCHAR2(100 CHAR),
  OCI                       VARCHAR2(100 CHAR),
  DUMP                      NUMBER(10),
  V$_SQL_BIND_DATA_DATATYPE  NUMBER(10)
)
;

/

INSERT INTO oracle_data_types (Data_Type, Uniform_Type_Code, Oracle_Doc, DBMS_SQL, DBMS_TYPES_TYPECODE_PERC, JDBC_java_sql_Types, OCI, DUMP, V$_SQL_BIND_DATA_DATATYPE) VALUES ('VARCHAR2',1,1,1,'9 VARCHAR2 1 VARCHAR','12 VARCHAR','1 SQLT_CHR',1,1);
INSERT INTO oracle_data_types (Data_Type, Uniform_Type_Code, Oracle_Doc, DBMS_SQL, DBMS_TYPES_TYPECODE_PERC, JDBC_java_sql_Types, OCI, DUMP, V$_SQL_BIND_DATA_DATATYPE) VALUES ('NVARCHAR2',1,1,1,'287 NVARCHAR2','12 VARCHAR','1 SQLT_CHR',1,1);
INSERT INTO oracle_data_types (Data_Type, Uniform_Type_Code, Oracle_Doc, DBMS_SQL, DBMS_TYPES_TYPECODE_PERC, JDBC_java_sql_Types, OCI, DUMP, V$_SQL_BIND_DATA_DATATYPE) VALUES ('NUMBER',2,2,2,'NUMBER','2 NUMERIC','2 SQLT_NUM',2,2);
INSERT INTO oracle_data_types (Data_Type, Uniform_Type_Code, Oracle_Doc, DBMS_SQL, DBMS_TYPES_TYPECODE_PERC, JDBC_java_sql_Types, OCI, DUMP, V$_SQL_BIND_DATA_DATATYPE) VALUES ('FLOAT',2,2,2,'2 NUMBER','2 NUMERIC','2 SQLT_NUM',2,2);
INSERT INTO oracle_data_types (Data_Type, Uniform_Type_Code, Oracle_Doc, DBMS_SQL, DBMS_TYPES_TYPECODE_PERC, JDBC_java_sql_Types, OCI, DUMP, V$_SQL_BIND_DATA_DATATYPE) VALUES ('LONG',8,8,8,'','-1 LONGVARCHAR','8 SQLT_LNG',NULL,8);
INSERT INTO oracle_data_types (Data_Type, Uniform_Type_Code, Oracle_Doc, DBMS_SQL, DBMS_TYPES_TYPECODE_PERC, JDBC_java_sql_Types, OCI, DUMP, V$_SQL_BIND_DATA_DATATYPE) VALUES ('DATE',12,12,12,'12 DATE','93 TIMESTAMP1','12 SQLT_DAT',12,12);
INSERT INTO oracle_data_types (Data_Type, Uniform_Type_Code, Oracle_Doc, DBMS_SQL, DBMS_TYPES_TYPECODE_PERC, JDBC_java_sql_Types, OCI, DUMP, V$_SQL_BIND_DATA_DATATYPE) VALUES ('BINARY_FLOAT',21,21,100,'100 BFLOAT','100','100 SQLT_IBFLOAT',100,100);
INSERT INTO oracle_data_types (Data_Type, Uniform_Type_Code, Oracle_Doc, DBMS_SQL, DBMS_TYPES_TYPECODE_PERC, JDBC_java_sql_Types, OCI, DUMP, V$_SQL_BIND_DATA_DATATYPE) VALUES ('BINARY_DOUBLE',22,22,101,'101 BDOUBLE','101','101 SQLT_IBFLOAT',101,101);
INSERT INTO oracle_data_types (Data_Type, Uniform_Type_Code, Oracle_Doc, DBMS_SQL, DBMS_TYPES_TYPECODE_PERC, JDBC_java_sql_Types, OCI, DUMP, V$_SQL_BIND_DATA_DATATYPE) VALUES ('TIMESTAMP',180,180,180,'187 TIMESTAMP','93 TIMESTAMP1','187 SQLT_TIMESTAMP',180,180);
INSERT INTO oracle_data_types (Data_Type, Uniform_Type_Code, Oracle_Doc, DBMS_SQL, DBMS_TYPES_TYPECODE_PERC, JDBC_java_sql_Types, OCI, DUMP, V$_SQL_BIND_DATA_DATATYPE) VALUES ('TIMESTAMP WITH TIME ZONE',181,181,181,'188 TIMESTAMP_TZ','-101','188 SQLT_TIMESTAMP_TZ',181,181);
INSERT INTO oracle_data_types (Data_Type, Uniform_Type_Code, Oracle_Doc, DBMS_SQL, DBMS_TYPES_TYPECODE_PERC, JDBC_java_sql_Types, OCI, DUMP, V$_SQL_BIND_DATA_DATATYPE) VALUES ('TIMESTAMP WITH LOCAL TIME ZONE',231,231,231,'232 TIMESTAMP_LTZ','-102','232 SQLT_TIMESTAMP_LTZ',231,231);
INSERT INTO oracle_data_types (Data_Type, Uniform_Type_Code, Oracle_Doc, DBMS_SQL, DBMS_TYPES_TYPECODE_PERC, JDBC_java_sql_Types, OCI, DUMP, V$_SQL_BIND_DATA_DATATYPE) VALUES ('INTERVAL YEAR TO MONTH',182,182,182,'189 INTERVAL_YM','-103','189 SQLT_INTERVAL_YM',182,182);
INSERT INTO oracle_data_types (Data_Type, Uniform_Type_Code, Oracle_Doc, DBMS_SQL, DBMS_TYPES_TYPECODE_PERC, JDBC_java_sql_Types, OCI, DUMP, V$_SQL_BIND_DATA_DATATYPE) VALUES ('INTERVAL DAY TO SECOND',183,183,183,'190 INTERVAL_DS','-104','190 SQLT_INTERVAL_DS',183,183);
INSERT INTO oracle_data_types (Data_Type, Uniform_Type_Code, Oracle_Doc, DBMS_SQL, DBMS_TYPES_TYPECODE_PERC, JDBC_java_sql_Types, OCI, DUMP, V$_SQL_BIND_DATA_DATATYPE) VALUES ('RAW',23,23,23,'95 RAW','-3 VARBINARY','23 SQLT_BIN',23,23);
INSERT INTO oracle_data_types (Data_Type, Uniform_Type_Code, Oracle_Doc, DBMS_SQL, DBMS_TYPES_TYPECODE_PERC, JDBC_java_sql_Types, OCI, DUMP, V$_SQL_BIND_DATA_DATATYPE) VALUES ('LONG RAW',24,24,24,'','-4 LONGVARBINARY','24 SQLT_LBI',NULL,24);
INSERT INTO oracle_data_types (Data_Type, Uniform_Type_Code, Oracle_Doc, DBMS_SQL, DBMS_TYPES_TYPECODE_PERC, JDBC_java_sql_Types, OCI, DUMP, V$_SQL_BIND_DATA_DATATYPE) VALUES ('ROWID',69,69,11,'','-8','104 SQLT_RDD',69,69);
INSERT INTO oracle_data_types (Data_Type, Uniform_Type_Code, Oracle_Doc, DBMS_SQL, DBMS_TYPES_TYPECODE_PERC, JDBC_java_sql_Types, OCI, DUMP, V$_SQL_BIND_DATA_DATATYPE) VALUES ('UROWID',208,208,208,'104 UROWID','-8','104 SQLT_RDD',208,208);
INSERT INTO oracle_data_types (Data_Type, Uniform_Type_Code, Oracle_Doc, DBMS_SQL, DBMS_TYPES_TYPECODE_PERC, JDBC_java_sql_Types, OCI, DUMP, V$_SQL_BIND_DATA_DATATYPE) VALUES ('CHAR',96,96,96,'96 CHAR','1 CHAR','96 SQLT_AFC',96,96);
INSERT INTO oracle_data_types (Data_Type, Uniform_Type_Code, Oracle_Doc, DBMS_SQL, DBMS_TYPES_TYPECODE_PERC, JDBC_java_sql_Types, OCI, DUMP, V$_SQL_BIND_DATA_DATATYPE) VALUES ('NCHAR',96,96,96,'286 NCHAR','1 CHAR','96 SQLT_AFC',96,96);
INSERT INTO oracle_data_types (Data_Type, Uniform_Type_Code, Oracle_Doc, DBMS_SQL, DBMS_TYPES_TYPECODE_PERC, JDBC_java_sql_Types, OCI, DUMP, V$_SQL_BIND_DATA_DATATYPE) VALUES ('CLOB',112,112,112,'112 CLOB','2005 CLOB','112 SQLT_CLOB',NULL,112);
INSERT INTO oracle_data_types (Data_Type, Uniform_Type_Code, Oracle_Doc, DBMS_SQL, DBMS_TYPES_TYPECODE_PERC, JDBC_java_sql_Types, OCI, DUMP, V$_SQL_BIND_DATA_DATATYPE) VALUES ('NCLOB',112,112,112,'288 NCLOB','2005 CLOB','112 SQLT_CLOB',NULL,112);
INSERT INTO oracle_data_types (Data_Type, Uniform_Type_Code, Oracle_Doc, DBMS_SQL, DBMS_TYPES_TYPECODE_PERC, JDBC_java_sql_Types, OCI, DUMP, V$_SQL_BIND_DATA_DATATYPE) VALUES ('BLOB',113,113,113,'113 BLOB','2004 BLOB','113 SQLT_BLOB',NULL,113);
INSERT INTO oracle_data_types (Data_Type, Uniform_Type_Code, Oracle_Doc, DBMS_SQL, DBMS_TYPES_TYPECODE_PERC, JDBC_java_sql_Types, OCI, DUMP, V$_SQL_BIND_DATA_DATATYPE) VALUES ('BFILE',114,114,114,'114 BFILE','-13','114 SQLT_BFILEE',NULL,114);
INSERT INTO oracle_data_types (Data_Type, Uniform_Type_Code, Oracle_Doc, DBMS_SQL, DBMS_TYPES_TYPECODE_PERC, JDBC_java_sql_Types, OCI, DUMP, V$_SQL_BIND_DATA_DATATYPE) VALUES ('XMLTYPE',109,NULL,109,'58 OPAQUE2','2007','108 SQLT_NTY',58,NULL);
INSERT INTO oracle_data_types (Data_Type, Uniform_Type_Code, Oracle_Doc, DBMS_SQL, DBMS_TYPES_TYPECODE_PERC, JDBC_java_sql_Types, OCI, DUMP, V$_SQL_BIND_DATA_DATATYPE) VALUES ('ANYDATA',109,NULL,109,'58 OPAQUE2','2007','108 SQLT_NTY',58,NULL);
INSERT INTO oracle_data_types (Data_Type, Uniform_Type_Code, Oracle_Doc, DBMS_SQL, DBMS_TYPES_TYPECODE_PERC, JDBC_java_sql_Types, OCI, DUMP, V$_SQL_BIND_DATA_DATATYPE) VALUES ('ANYDATASET',109,NULL,109,'58 OPAQUE2','2007','108 SQLT_NTY',58,NULL);
INSERT INTO oracle_data_types (Data_Type, Uniform_Type_Code, Oracle_Doc, DBMS_SQL, DBMS_TYPES_TYPECODE_PERC, JDBC_java_sql_Types, OCI, DUMP, V$_SQL_BIND_DATA_DATATYPE) VALUES ('ANYTYPE',109,NULL,109,'58 OPAQUE2','2007','108 SQLT_NTY',58,NULL);
INSERT INTO oracle_data_types (Data_Type, Uniform_Type_Code, Oracle_Doc, DBMS_SQL, DBMS_TYPES_TYPECODE_PERC, JDBC_java_sql_Types, OCI, DUMP, V$_SQL_BIND_DATA_DATATYPE) VALUES ('Object type',109,NULL,109,'108 OBJECT','2002 STRUCT','108 SQLT_NTY',121,NULL);
INSERT INTO oracle_data_types (Data_Type, Uniform_Type_Code, Oracle_Doc, DBMS_SQL, DBMS_TYPES_TYPECODE_PERC, JDBC_java_sql_Types, OCI, DUMP, V$_SQL_BIND_DATA_DATATYPE) VALUES ('VARRAY',109,NULL,109,'247 VARRAY','2003 ARRAY','108 SQLT_NTY',NULL,NULL);
INSERT INTO oracle_data_types (Data_Type, Uniform_Type_Code, Oracle_Doc, DBMS_SQL, DBMS_TYPES_TYPECODE_PERC, JDBC_java_sql_Types, OCI, DUMP, V$_SQL_BIND_DATA_DATATYPE) VALUES ('Nested table',109,NULL,109,'248 TABLE','2003 ARRAY','108 SQLT_NTY',NULL,NULL);
INSERT INTO oracle_data_types (Data_Type, Uniform_Type_Code, Oracle_Doc, DBMS_SQL, DBMS_TYPES_TYPECODE_PERC, JDBC_java_sql_Types, OCI, DUMP, V$_SQL_BIND_DATA_DATATYPE) VALUES ('REF',111,NULL,111,'110 REF','2006 REF','110 SQLT_REF',111,NULL);
INSERT INTO oracle_data_types (Data_Type, Uniform_Type_Code, Oracle_Doc, DBMS_SQL, DBMS_TYPES_TYPECODE_PERC, JDBC_java_sql_Types, OCI, DUMP, V$_SQL_BIND_DATA_DATATYPE) VALUES ('Strong REF CURSOR',102,NULL,102,'','-10','116 SQLT_RSET',102,NULL);
INSERT INTO oracle_data_types (Data_Type, Uniform_Type_Code, Oracle_Doc, DBMS_SQL, DBMS_TYPES_TYPECODE_PERC, JDBC_java_sql_Types, OCI, DUMP, V$_SQL_BIND_DATA_DATATYPE) VALUES ('Weak REF CURSOR',102,NULL,102,'','-10','116 SQLT_RSET',102,NULL);

可视化参考的数据屏幕截图

使用sys.DBMS_TYPES包的示例

要直接从程序包中选择PL/

代码,请执行以下操作:

代码语言:javascript
复制
SELECT TEXT 
FROM dba_source 
WHERE name = 'DBMS_TYPES' 
   AND regexp_like(text, 'TYPECODE')
;

使用PL/SQL提取常量的

代码语言:javascript
复制
BEGIN
  dbms_output.put_line(dbms_types.TYPECODE_CHAR            ||' TYPECODE_DATE');
  dbms_output.put_line(dbms_types.TYPECODE_NUMBER          ||' TYPECODE_NUMBER');
  dbms_output.put_line(dbms_types.TYPECODE_VARCHAR2        ||' TYPECODE_RAW');
  dbms_output.put_line(dbms_types.TYPECODE_VARCHAR         ||' TYPECODE_CHAR');
  dbms_output.put_line(dbms_types.TYPECODE_RAW             ||' TYPECODE_VARCHAR2');
  dbms_output.put_line(dbms_types.TYPECODE_MLSLABEL        ||' TYPECODE_VARCHAR');
  dbms_output.put_line(dbms_types.TYPECODE_BLOB            ||' TYPECODE_MLSLABEL');
  dbms_output.put_line(dbms_types.TYPECODE_BFILE           ||' TYPECODE_BLOB');
  dbms_output.put_line(dbms_types.TYPECODE_CLOB            ||' TYPECODE_BFILE');
  dbms_output.put_line(dbms_types.TYPECODE_CFILE           ||' TYPECODE_CLOB');
  dbms_output.put_line(dbms_types.TYPECODE_TIMESTAMP       ||' TYPECODE_CFILE');
  dbms_output.put_line(dbms_types.TYPECODE_TIMESTAMP_TZ    ||' TYPECODE_TIMESTAMP');
  dbms_output.put_line(dbms_types.TYPECODE_TIMESTAMP_LTZ   ||' TYPECODE_TIMESTAMP_TZ');
  dbms_output.put_line(dbms_types.TYPECODE_INTERVAL_YM     ||' TYPECODE_TIMESTAMP_LTZ');
  dbms_output.put_line(dbms_types.TYPECODE_INTERVAL_DS     ||' TYPECODE_INTERVAL_YM');
  dbms_output.put_line(dbms_types.TYPECODE_REF             ||' TYPECODE_INTERVAL_DS');
  dbms_output.put_line(dbms_types.TYPECODE_OBJECT          ||' TYPECODE_REF');
  dbms_output.put_line(dbms_types.TYPECODE_VARRAY          ||' TYPECODE_OBJECT');
  dbms_output.put_line(dbms_types.TYPECODE_TABLE           ||' TYPECODE_VARRAY');
  dbms_output.put_line(dbms_types.TYPECODE_NAMEDCOLLECTION ||' TYPECODE_TABLE');
  dbms_output.put_line(dbms_types.TYPECODE_DATE            ||' TYPECODE_NAMEDCOLLECTION');
  dbms_output.put_line(dbms_types.TYPECODE_OPAQUE          ||' TYPECODE_OPAQUE');
  dbms_output.put_line(dbms_types.TYPECODE_NCHAR           ||' TYPECODE_NCHAR');
  dbms_output.put_line(dbms_types.TYPECODE_NVARCHAR2       ||' TYPECODE_NVARCHAR2');
  dbms_output.put_line(dbms_types.TYPECODE_NCLOB           ||' TYPECODE_NCLOB');
  dbms_output.put_line(dbms_types.TYPECODE_BFLOAT          ||' TYPECODE_BFLOAT');
  dbms_output.put_line(dbms_types.TYPECODE_BDOUBLE         ||' TYPECODE_BDOUBLE');
  dbms_output.put_line(dbms_types.TYPECODE_UROWID          ||' TYPECODE_UROWID');
END;

输出

代码语言:javascript
复制
96 TYPECODE_DATE
2 TYPECODE_NUMBER
9 TYPECODE_RAW
1 TYPECODE_CHAR
95 TYPECODE_VARCHAR2
105 TYPECODE_VARCHAR
113 TYPECODE_MLSLABEL
114 TYPECODE_BLOB
112 TYPECODE_BFILE
115 TYPECODE_CLOB
187 TYPECODE_CFILE
188 TYPECODE_TIMESTAMP
232 TYPECODE_TIMESTAMP_TZ
189 TYPECODE_TIMESTAMP_LTZ
190 TYPECODE_INTERVAL_YM
110 TYPECODE_INTERVAL_DS
108 TYPECODE_REF
247 TYPECODE_OBJECT
248 TYPECODE_VARRAY
122 TYPECODE_TABLE
12 TYPECODE_NAMEDCOLLECTION
58 TYPECODE_OPAQUE
286 TYPECODE_NCHAR
287 TYPECODE_NVARCHAR2
288 TYPECODE_NCLOB
100 TYPECODE_BFLOAT
101 TYPECODE_BDOUBLE
104 TYPECODE_UROWID

使用直接从ALL_TAB_COLUMNS视图中拉出的解码函数代码的

代码语言:javascript
复制
SELECT DISTINCT c.type# type_code,
decode(c.type#, 1, decode(c.charsetform, 2, 'NVARCHAR2', 'VARCHAR2'),
                2, decode(c.scale, null, decode(c.precision#, null, 'NUMBER', 'FLOAT'), 'NUMBER'),
                8, 'LONG',
                9, decode(c.charsetform, 2, 'NCHAR VARYING', 'VARCHAR'),
                12, 'DATE',
                23, 'RAW', 24, 'LONG RAW',
                69, 'ROWID',
                96, decode(c.charsetform, 2, 'NCHAR', 'CHAR'),
                100, 'BINARY_FLOAT',
                101, 'BINARY_DOUBLE',
                105, 'MLSLABEL',
                106, 'MLSLABEL',
                111, 'REF',
                112, decode(c.charsetform, 2, 'NCLOB', 'CLOB'),
                113, 'BLOB', 114, 'BFILE', 115, 'CFILE',
                121, 'USER_TYPE',
                122, 'USER_TYPE',
                123, 'USER_TYPE',
                178, 'TIME(' ||c.scale|| ')',
                179, 'TIME(' ||c.scale|| ')' || ' WITH TIME ZONE',
                180, 'TIMESTAMP(' ||c.scale|| ')',
                181, 'TIMESTAMP(' ||c.scale|| ')'||' WITH TIME ZONE',
                231, 'TIMESTAMP(' ||c.scale|| ')'||' WITH LOCAL TIME ZONE',
                182, 'INTERVAL YEAR(' ||c.precision#||') TO MONTH',
                183, 'INTERVAL DAY(' ||c.precision#||') TO SECOND(' ||
                      c.scale || ')',
                208, 'UROWID',
                'UNDEFINED') type_name 
FROM sys.col$ c
ORDER BY c.type#
;
票数 0
EN

Stack Overflow用户

发布于 2019-05-31 07:26:21

这里解释了这些类型:Oracle Built-in Datatypes

我认为,当DATEs不是表的一部分时,类型13是如何表示它们的。这是因为您使用的是to_date函数,所以它只作为内存中的结构存在,我认为不同的架构可能会有所不同。相比之下,表中的值通常是以独立于平台的方式存储的(我非常确定这对于数值类型是正确的)。Reference

代码语言:javascript
复制
create table t1 ( c1 date );
insert into t1 values ( sysdate );
commit;

SELECT 
    DUMP(sysdate,10) AS date_type
  , dump(c1, 10) as date_table_type
FROM t1;

Typ=13 Len=8: 227,7,5,30,18,22,0,0                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
Typ=12 Len=7: 120,119,5,30,19,23,1   
票数 1
EN

Stack Overflow用户

发布于 2019-05-31 08:09:05

“内置”列表可以从DBA_TAB_COLS_V$ (它是DBA_TAB_COLUMNS等视图的基础)的视图文本中看到。12.2应该是这样的:

代码语言:javascript
复制
decode(c.type#, 1, decode(c.charsetform, 2, 'NVARCHAR2', 'VARCHAR2'),
                   2, decode(c.scale, null,
                             decode(c.precision#, null, 'NUMBER', 'FLOAT'),
                             'NUMBER'),
                   8, 'LONG',
                   9, decode(c.charsetform, 2, 'NCHAR VARYING', 'VARCHAR'),
                   12, 'DATE',
                   23, 'RAW', 24, 'LONG RAW',
                   58, nvl2(ac.synobj#, (select o.name from obj$ o
                            where o.obj#=ac.synobj#), ot.name),
                   69, 'ROWID',
                   96, decode(c.charsetform, 2, 'NCHAR', 'CHAR'),
                   100, 'BINARY_FLOAT',
                   101, 'BINARY_DOUBLE',
                   105, 'MLSLABEL',
                   106, 'MLSLABEL',
                   111, nvl2(ac.synobj#, (select o.name from obj$ o
                             where o.obj#=ac.synobj#), ot.name),
                   112, decode(c.charsetform, 2, 'NCLOB', 'CLOB'),
                   113, 'BLOB', 114, 'BFILE', 115, 'CFILE',
                   121, nvl2(ac.synobj#, (select o.name from obj$ o
                             where o.obj#=ac.synobj#), ot.name),
                   122, nvl2(ac.synobj#, (select o.name from obj$ o
                             where o.obj#=ac.synobj#), ot.name),
                   123, nvl2(ac.synobj#, (select o.name from obj$ o
                             where o.obj#=ac.synobj#), ot.name),
                   178, 'TIME(' ||c.scale|| ')',
                   179, 'TIME(' ||c.scale|| ')' || ' WITH TIME ZONE',
                   180, 'TIMESTAMP(' ||c.scale|| ')',
                   181, 'TIMESTAMP(' ||c.scale|| ')' || ' WITH TIME ZONE',
                   231, 'TIMESTAMP(' ||c.scale|| ')' || ' WITH LOCAL TIME ZONE',
                   182, 'INTERVAL YEAR(' ||c.precision#||') TO MONTH',
                   183, 'INTERVAL DAY(' ||c.precision#||') TO SECOND(' ||
                         c.scale || ')',
                   208, 'UROWID',
                   'UNDEFINED')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56386532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档