zoukankan      html  css  js  c++  java
  • Oracle按表名导出表物理结构Excel形式

    可以在PL/SQL工具中打开test窗口进行执行,upper方法中的参数就是需要导出的表名;具体代码如下
    declare
      -- Local variables here
      mcomments varchar2(50);
      mField    varchar2(2000);
      mconstraint_type varchar2(500);
      mKey      varchar2(1000);
    begin
      for cur in (select t.TABLE_NAME field1
                    from user_tables t
                   where instr(upper('XS_CPLX,XS_MJLXB,XS_PTXXB,XS_XSSJ,XS_MXPZXX,XS_XCSJB,XS_ZDJBXX'), t.TABLE_NAME) > 0) loop
      
        SELECT nvl((SELECT t.comments
                     FROM user_tab_comments t
                    where upper(t.table_name) = upper(cur.field1)),
                   '')
          into mcomments
          FROM dual;
      
        dbms_output.put_line(cur.field1 || '(' || mcomments || '):');
      
        dbms_output.put_line('列名' || chr(9) || '数据类型' || chr(9) || '说明' ||
                             chr(9) || '主外键');
      
        for curField in (SELECT *
                           FROM user_tab_columns t
                          where t.TABLE_NAME = upper(cur.field1)
                          order by column_id) loop
        
          SELECT nvl((SELECT t.comments
                       FROM user_col_comments t
                      where upper(t.TABLE_NAME) = upper(cur.field1)
                        and upper(t.column_name) = upper(curfield.column_name)),
                     '')
            into mField
            FROM dual;
        
          SELECT nvl((select max(au.constraint_type)
                       from user_cons_columns cu, user_constraints au
                      where cu.constraint_name = au.constraint_name
                        and cu.column_name = upper(curfield.column_name)
                        and au.table_name = upper(cur.field1)),
                     '')
            into mconstraint_type
            FROM dual;
            mkey:='';
            if(mconstraint_type='P') then
            mkey:='主键';
            end if;
            
            if(mconstraint_type='R') then
            mkey:='外键';
            end if;
        
          dbms_output.put_line(curField.Column_Name || chr(9) || case when
                               curField.Data_Type in ('VARCHAR2') then
                               curField.Data_Type || '(' ||
                               curField.Data_Length || ')' else
                               curField.Data_Type
                               end || chr(9) || replace(mField, chr(10), '') ||
                               chr(9) || mKey);
        end loop;
      
        dbms_output.put_line(chr(13));
        --dbms_output.put_line(chr(10));
      end loop;
    
    end;

    平时开发需要用到,所以记录一下。

  • 相关阅读:
    AES加密解密
    水电缴费管理系统 需求分析与设计
    ORACLE SQL语句练习
    GUID全局唯一标识符(转)
    java 基础--多线程基础练习
    java基础List集合练习
    I/O输入输出流的练习
    java基础--集合练习
    java基础异常捕获处理
    java基础 接口练习
  • 原文地址:https://www.cnblogs.com/lvanka/p/13740259.html
Copyright © 2011-2022 走看看