【问题标题】:How to get information about a User-Defined Type?如何获取有关用户定义类型的信息?
【发布时间】:2011-11-20 00:29:09
【问题描述】:

简单来说,PL/SQL 一般遵循以下几点:

DECLARE 
     Variable declaration
BEGIN 
     Program Execution 
EXCEPTION 
     Exception handling
END;

我对 PL/SQL 很陌生,我正在查看变量声明部分,我想在其中找到有关 SALES_PRODUCT_TY_LIST 的更多信息。

是否有我可以查找的表来检查 SALES_PRODUCT_TY_LIST 上的信息,例如从 all_tab_cols 视图中检查表列信息?

CREATE OR REPLACE PROCEDURE GET_DISCOUNTS
(
  v_have_list SALES_PRODUCT_TY_LIST
)
IS
  QUERY VARCHAR(5000);
...

谢谢。

【问题讨论】:

    标签: oracle variables plsql user-defined-types


    【解决方案1】:

    Oracle 数据库有一个广泛的数据字典(一些其他 DBMS 产品称之为信息架构)。你可以找到所有的意见here。唉,修订后的 ToC 结构使得在 11g 文档中查找内容变得更加困难,除非您已经知道要查找的内容,所以use the index instead。 8-)

    反正你需要查询的视图是ALL_TYPESALL_TYPE_ATTRS

    【讨论】:

      【解决方案2】:

      这似乎是用户定义的集合类型。您可以通过查询all_types/user_types 视图找到有关它的一些信息:

      select * from user_types where type_name = 'SALES_PRODUCT_TY_LIST'
      

      类型的定义例如可以通过查询all_source/user_source查看:

      select text from user_source where name = 'SALES_PRODUCT_TY_LIST' order by line
      

      【讨论】:

        【解决方案3】:

        试试这个来获取 DDL:

        SELECT dbms_log.substr(dbms_metadata.get_ddl('TYPE', 'SALES_PRODUCT_TY_LIST'), 32767,1) 
        FROM DUAL;
        

        见:http://www.myoracleguide.com/s/gen_schema.htm

        【讨论】:

          【解决方案4】:

          好的,我发现了一些东西:

          select * 
          from all_objects
          where object_name like 'SALES%';
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-03-05
            • 2023-03-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-07-24
            • 2019-12-15
            相关资源
            最近更新 更多