包的替代表 all_types 在 oracle db 中定义类型

alternative tables all_types for package define types in oracle db

我用的是oracle 19,包中声明了如下类型

    CREATE OR REPLACE package MYUSER.mytest is
      TYPE MY_TABLE IS TABLE OF VARCHAR2(30);

      FUNCTION mytable_test ( in_param IN MY_TABLE , out_param OUT MY_TABLE , inout_param IN OUT MY_TABLE )
               RETURN MY_TABLE ;
end mytest;

我需要了解此类对象或集合。我通常使用以下查询来执行此操作:

SELECT  * FROM all_types WHERE OWNER = 'MYUSER', TYPE_NAME  = 'MY_TABLE';

但它不适用于包内声明的类型。我该怎么做?

改为查看 all_plsql_types

SELECT * FROM all_plsql_types
WHERE OWNER = 'MYUSER'
AND TYPE_NAME = 'MY_TABLE';

如您所知,它是一种集合类型,您可以使用 all_plsql_coll_types:

进一步挖掘
SELECT * FROM all_plsql_coll_types
WHERE OWNER = 'MYUSER'
AND TYPE_NAME = 'MY_TABLE';

db<>fiddle

all_plsql_types and all_plsql_coll_types 的文档。