Oracle 内置数据类型系统视图
Oracle built-in datatypes system view
各位!
有人知道 Oracle 内置数据类型系统字典视图吗?
示例:
SELECT DUMP ('HASAN') FROM DUAL;
returns
Typ=96 Len=5: 72,65,83,65,78
Oracle 文档说它是 CHAR 或 NCHAR 数据类型。
但是有没有视图,我可以在其中通过返回的代码 (Typ=96) 找到该数据类型?
它存在吗?
有DBA_TYPEs,它有一个预定义的列,例如:
SELECT * FROM dba_types WHERE predefined = 'YES';
其中似乎包含一些明显的类型(例如 NUMBER、VARCHAR2 等),但我不想说这是排他性的(例如,ANYDATA 数据类型预定义 = NO)。
无论如何,它应该让您知道在哪里看,虽然我不确定您为什么要看?
N.B。如果你想查看字典 tables 的列表,你可以这样做:
select * from dictionary;
如果您不记得确切的 table 姓名,您可以酌情过滤!
SELECT t.typecode, name
FROM sys.type$ t, sys.obj$ o
WHERE t.toid = o.oid$ and t.typecode = 96;
您还可以查看 DBMS_TYPES 包的源代码
select TEXT
from dba_source
where name = 'DBMS_TYPES'
and regexp_like(text, 'TYPECODE');
TYPECODE_DATE PLS_INTEGER := 12;
TYPECODE_NUMBER PLS_INTEGER := 2;
TYPECODE_RAW PLS_INTEGER := 95;
TYPECODE_CHAR PLS_INTEGER := 96;
TYPECODE_VARCHAR2 PLS_INTEGER := 9;
TYPECODE_VARCHAR PLS_INTEGER := 1;
TYPECODE_MLSLABEL PLS_INTEGER := 105;
TYPECODE_BLOB PLS_INTEGER := 113;
TYPECODE_BFILE PLS_INTEGER := 114;
TYPECODE_CLOB PLS_INTEGER := 112;
TYPECODE_CFILE PLS_INTEGER := 115;
TYPECODE_TIMESTAMP PLS_INTEGER := 187;
TYPECODE_TIMESTAMP_TZ PLS_INTEGER := 188;
TYPECODE_TIMESTAMP_LTZ PLS_INTEGER := 232;
TYPECODE_INTERVAL_YM PLS_INTEGER := 189;
TYPECODE_INTERVAL_DS PLS_INTEGER := 190;
TYPECODE_REF PLS_INTEGER := 110;
TYPECODE_OBJECT PLS_INTEGER := 108;
TYPECODE_VARRAY PLS_INTEGER := 247; /* COLLECTION TYPE */
TYPECODE_TABLE PLS_INTEGER := 248; /* COLLECTION TYPE */
TYPECODE_NAMEDCOLLECTION PLS_INTEGER := 122;
TYPECODE_OPAQUE PLS_INTEGER := 58; /* OPAQUE TYPE */
TYPECODE_NCHAR PLS_INTEGER := 286;
TYPECODE_NVARCHAR2 PLS_INTEGER := 287;
TYPECODE_NCLOB PLS_INTEGER := 288;
TYPECODE_BFLOAT PLS_INTEGER := 100;
TYPECODE_BDOUBLE PLS_INTEGER := 101;
TYPECODE_UROWID PLS_INTEGER := 104;
注意,DBMS_TYPES 中的数字与 PL/SQL 相关。但是,DUMP
是一个 SQL 函数,您不能在 PL/SQL 中使用它。因此这些数字略有不同。
各位!
有人知道 Oracle 内置数据类型系统字典视图吗?
示例:
SELECT DUMP ('HASAN') FROM DUAL;
returns
Typ=96 Len=5: 72,65,83,65,78
Oracle 文档说它是 CHAR 或 NCHAR 数据类型。
但是有没有视图,我可以在其中通过返回的代码 (Typ=96) 找到该数据类型?
它存在吗?
有DBA_TYPEs,它有一个预定义的列,例如:
SELECT * FROM dba_types WHERE predefined = 'YES';
其中似乎包含一些明显的类型(例如 NUMBER、VARCHAR2 等),但我不想说这是排他性的(例如,ANYDATA 数据类型预定义 = NO)。
无论如何,它应该让您知道在哪里看,虽然我不确定您为什么要看?
N.B。如果你想查看字典 tables 的列表,你可以这样做:
select * from dictionary;
如果您不记得确切的 table 姓名,您可以酌情过滤!
SELECT t.typecode, name
FROM sys.type$ t, sys.obj$ o
WHERE t.toid = o.oid$ and t.typecode = 96;
您还可以查看 DBMS_TYPES 包的源代码
select TEXT
from dba_source
where name = 'DBMS_TYPES'
and regexp_like(text, 'TYPECODE');
TYPECODE_DATE PLS_INTEGER := 12;
TYPECODE_NUMBER PLS_INTEGER := 2;
TYPECODE_RAW PLS_INTEGER := 95;
TYPECODE_CHAR PLS_INTEGER := 96;
TYPECODE_VARCHAR2 PLS_INTEGER := 9;
TYPECODE_VARCHAR PLS_INTEGER := 1;
TYPECODE_MLSLABEL PLS_INTEGER := 105;
TYPECODE_BLOB PLS_INTEGER := 113;
TYPECODE_BFILE PLS_INTEGER := 114;
TYPECODE_CLOB PLS_INTEGER := 112;
TYPECODE_CFILE PLS_INTEGER := 115;
TYPECODE_TIMESTAMP PLS_INTEGER := 187;
TYPECODE_TIMESTAMP_TZ PLS_INTEGER := 188;
TYPECODE_TIMESTAMP_LTZ PLS_INTEGER := 232;
TYPECODE_INTERVAL_YM PLS_INTEGER := 189;
TYPECODE_INTERVAL_DS PLS_INTEGER := 190;
TYPECODE_REF PLS_INTEGER := 110;
TYPECODE_OBJECT PLS_INTEGER := 108;
TYPECODE_VARRAY PLS_INTEGER := 247; /* COLLECTION TYPE */
TYPECODE_TABLE PLS_INTEGER := 248; /* COLLECTION TYPE */
TYPECODE_NAMEDCOLLECTION PLS_INTEGER := 122;
TYPECODE_OPAQUE PLS_INTEGER := 58; /* OPAQUE TYPE */
TYPECODE_NCHAR PLS_INTEGER := 286;
TYPECODE_NVARCHAR2 PLS_INTEGER := 287;
TYPECODE_NCLOB PLS_INTEGER := 288;
TYPECODE_BFLOAT PLS_INTEGER := 100;
TYPECODE_BDOUBLE PLS_INTEGER := 101;
TYPECODE_UROWID PLS_INTEGER := 104;
注意,DBMS_TYPES 中的数字与 PL/SQL 相关。但是,DUMP
是一个 SQL 函数,您不能在 PL/SQL 中使用它。因此这些数字略有不同。