您可以在视图中看到 PL/SQL 类型all_plsql_types
SQL> > desc all_plsql_types
Name Null? Type
----------------------------------------------------------------- -------- --------------------------------------------
OWNER NOT NULL VARCHAR2(128)
TYPE_NAME VARCHAR2(136)
PACKAGE_NAME NOT NULL VARCHAR2(128)
TYPE_OID NOT NULL RAW(16)
TYPECODE VARCHAR2(58)
ATTRIBUTES NUMBER
CONTAINS_PLSQL VARCHAR2(3)
...或者如果您愿意,可以使用dba_
or版本。user_
该视图仅在 12c 中可用。在 11gR2 中,如果您启用了PL/Scope ,您可以从all_identifiers
视图中提取该信息:
SQL> desc all_identifiers;
Name Null? Type
----------------------------------------- -------- ----------------------------
OWNER NOT NULL VARCHAR2(30)
NAME VARCHAR2(30)
SIGNATURE VARCHAR2(32)
TYPE VARCHAR2(18)
OBJECT_NAME NOT NULL VARCHAR2(30)
OBJECT_TYPE VARCHAR2(13)
USAGE VARCHAR2(11)
USAGE_ID NUMBER
LINE NUMBER
COL NUMBER
USAGE_CONTEXT_ID NUMBER
...或者如果您愿意,可以使用 dba_ 或 user_ 版本。
快速演示:
alter session set PLSCOPE_SETTINGS='IDENTIFIERS:ALL';
create package my_types as
type T_ASSOCIATIVE is table of number index by pls_integer;
type T_TABLE_TYPE is table of number;
type T_CURSOR_TYPE is ref cursor;
end my_types;
/
select name, type
from user_identifiers
where object_name = 'MY_TYPES'
and usage = 'DECLARATION'
and type != 'PACKAGE'
order by name;
NAME TYPE
------------------------------ ------------------
T_ASSOCIATIVE INDEX TABLE
T_CURSOR_TYPE REFCURSOR
T_TABLE_TYPE NESTED TABLE
您可能需要重新编译现有对象;通过重新创建它们或使用以下方式减少干扰alter package
:
alter session set PLSCOPE_SETTINGS='IDENTIFIERS:ALL';
alter package my_types compile;