rt

解决方案 »

  1.   

    SELECT * FROM TAB;                  所有表
    SELECT * FROM ALL_CONS_COLUMNS;     所有表的约束

      

  2.   

    select * from col;  所有列
      

  3.   

    select * from user_tab_columns where table_name='...';
      

  4.   

    表的内容:all_tables列的内容、数据类型:all_tab_columns表注释:all_tab_comments列注释:all_col_comments
      

  5.   

    如何构造一个类似的视图:
    SELECT     "SYSTEM"."V_XT_COL_CMNT"."COMMENTS" ,        //注释
               "SYSTEM"."V_XT_COL_CMNT"."COLUMN_NAME" , //列名
               "SYSTEM"."V_XT_COL_CMNT"."DATA_TYPE" , //该列的数据类型
               "SYSTEM"."V_XT_COL_CMNT"."OWNER" , //表的拥有者
               "SYSTEM"."V_XT_COL_CMNT"."TABLE_NAME" ,      //表名
               "SYSTEM"."V_XT_COL_CMNT"."COLUMN_ID"      //列的标识,估计是一个自动赋值的id
    FROM     "SYSTEM"."V_XT_COL_CMNT"      
    WHERE      ( SYSTEM."V_XT_COL_CMNT"."OWNER" = :pm_owner ) And 
               ( SYSTEM."V_XT_COL_CMNT"."TABLE_NAME" = :pm_tablename )
      

  6.   

    多谢shahand(死磕),已经基本可以,下面贴出我的实现,是用来做自定义查询的:
    1、表的所有者和表名:select  table_name,   comments  from    system.v_xt_tbl_cmnt 
         where   owner = 'EHD' and table_name = :S_STR; 
       在系统表all_tab_comments来完成该功能,创建一个视图。
       OWNER          
       TABLE_NAME
       TABLE_TYPE
       COMMENTS       //在system用户下创建的。
       create view v_xt_tbl_cmnt as select owner,table_name,comments from all_tab_comments;
    2、根据表名和表的所有者来查询出列的注释,列名,类型
       SELECT  "SYSTEM"."V_XT_COL_CMNT"."COMMENTS" ,        //注释 //从all_col_comments中获得
               "SYSTEM"."V_XT_COL_CMNT"."COLUMN_NAME" , //列名* //从all_tab_columns中获得
               "SYSTEM"."V_XT_COL_CMNT"."DATA_TYPE" , //该列的数据类型 *
               "SYSTEM"."V_XT_COL_CMNT"."OWNER" , //表的拥有者*
               "SYSTEM"."V_XT_COL_CMNT"."TABLE_NAME" ,      //表名 *
               "SYSTEM"."V_XT_COL_CMNT"."COLUMN_ID"      //列的标识,估计是一个自动赋值的id *
       FROM    "SYSTEM"."V_XT_COL_CMNT"      
       WHERE   ( SYSTEM."V_XT_COL_CMNT"."OWNER" = :pm_owner ) And 
               ( SYSTEM."V_XT_COL_CMNT"."TABLE_NAME" = :pm_tablename ) 
       由上面的两个表来,在最初里面没有注释的信息,需要添加。
        all_col_comments //表
        OWNER                                     NOT NULL VARCHAR2(30)
        TABLE_NAME                                NOT NULL VARCHAR2(30)
        COLUMN_NAME                               NOT NULL VARCHAR2(30)
        COMMENTS                                           VARCHAR2(4000)
        all_tab_columns  //表
        
       create view v_xt_col_cmnt as 
       select all_col_comments.comments,
              all_tab_columns.column_name,
              all_tab_columns.data_type,
              all_tab_columns.owner,
              all_tab_columns.table_name,
              all_tab_columns.column_id 
       from all_col_comments,all_tab_columns 
       where all_col_comments.owner=all_tab_columns.owner and
             all_col_comments.table_name=all_tab_columns.table_name and
             all_col_comments.column_name=all_tab_columns.column_name;
    3、用户选择2中的结果,设置列的筛选条件。
      SELECT   "XTCOLSLT"."COLNAME" ,  //列名
               "XTCOLSLT"."COLTYPE" ,  //列的类型  不显示出来。
               "XTCOLSLT"."OPERATOR" , //操作
               "XTCOLSLT"."VALUE" ,    //值
               "XTCOLSLT"."LOGICAL"    //关系
       FROM    "XTCOLSLT" 
    4、读3中的数据完成where子句。设置自定义的查询条件表达式。 希望大家提点意见!
      

  7.   

    身边没有oracle的工具书,有谁知道怎么为表和列加注释。
      

  8.   

    已经解决。comment on column ehd.gz_item_base.name is '姓名';