我可以使用字典视图发现在Oracle PL / sql包中声明的类型吗?即当我宣布这个:
CREATE OR REPLACE PACKAGE my_types AS TYPE t_cursor_type IS REF CURSOR; TYPE t_table_type IS TABLE OF some_table%rowtype; END my_types;
我想正式发现t_cursor_type和t_table_type.它们似乎没有被列入
SYS.ALL_TYPES
通过“正式”,我的意思是我想要一些“正式的元数据”,即查询USER_SOURCE不会做到这一点.
仅从11.1开始.
从手册:
http://download.oracle.com/docs/cd/E11882_01/appdev.112/e17125/adfns_plscope.htm#ADFNS02204
http://download.oracle.com/docs/cd/E11882_01/server.112/e17110/initparams189.htm#REFRN10271
PL/Scope is a compiler-driven tool that collects data about identifiers in PL/sql source code at program-unit compilation time and makes it available in static data dictionary views. The collected data includes information about identifier types,usages (declaration,definition,reference,call,assignment) and the location of each usage in the source code.
DEMO
CREATE OR REPLACE PACKAGE my_types AS TYPE t_cursor_type IS REF CURSOR; TYPE t_table_type IS TABLE OF employees%rowtype; type t_associative is table number index by varchar2(20); END my_types; alter package my_types compile plscope_settings='IDENTIFIERS:ALL' reuse settings; select * from user_identifiers ui where ui.object_type = 'PACKAGE' and ui.usage = 'DECLARATION' and ui.usage_context_id = '1'; NAME SIGNATURE TYPE OBJECT_NAME OBJECT_TYPE USAGE USAGE_ID LINE COL USAGE_CONTEXT_ID ------------------------------ -------------------------------- ------------------ ------------------------------ ------------- ----------- ---------- ---------- ---------- ---------------- T_ASSOCIATIVE 9A18FE6BCB72110F39CED9E08B932ECB ASSOCIATIVE ARRAY MY_TYPES PACKAGE DECLARATION 4 4 8 1 T_TABLE_TYPE 77067FE9732B492C166D38221DC3DF37 NESTED TABLE MY_TYPES PACKAGE DECLARATION 3 3 8 1 T_CURSOR_TYPE EDEC9260784B7721BC3F3DAB293F23DD REFCURSOR MY_TYPES PACKAGE DECLARATION 2 2 8 1 zep@dev>