Oracle使用游标在user_col_comments和user_tab_comments寻找user_col_comments的comments同时包含‘账号’和‘证件’的表名

此博客给出了一段Oracle数据库的代码。代码中声明了游标,从user_col_comments和user_tab_comments表中查询数据,按表名排序。通过循环游标,根据表名和注释内容进行判断,若注释包含特定关键词,就输出表注释和表名,还对注释进行拼接处理。

declare
  cursor v_cursor is
  select t1.table_name,t1.comments as uc_comments,t2.comments as ut_comments
  from user_col_comments t1,user_tab_comments t2
  where t1.table_name=t2.table_name
  order by t1.table_name;
  v_table_name varchar2(4000):='';
  v_uc_comments varchar2(4000):='';
begin
  for v_i in v_cursor loop
    if v_i.table_name!=v_table_name then
      begin
        if v_uc_comments like '%账号%' and v_uc_comments like '%证件%' then/*账号和证件可替换成其他*/
          begin
            --dbms_output.put_line('v_uc_comments:'||v_uc_comments);
            dbms_output.put_line('');
            dbms_output.put_line('dbms_output.put_line:'||v_i.ut_comments||'     '||v_i.table_name);
          end;
        end if;
        v_uc_comments:=v_i.uc_comments;
      end;
    else
      begin
        v_uc_comments:=v_uc_comments||v_i.uc_comments;
      end;
    end if;
    v_table_name:=v_i.table_name;
  end loop;
end;
 

SET SERVEROUTPUT ON; SET LONG 1000000; SET PAGESIZE 0; SET FEEDBACK OFF; SET VERIFY OFF; DECLARE CURSOR c_tables IS SELECT table_name FROM all_tables WHERE owner = 'JGBS_HISOFT' AND table_name LIKE 'BEEHIVE_CALIBER' ORDER BY table_name; CURSOR c_columns (p_table_name VARCHAR2) IS SELECT column_name, data_type, data_length, data_precision, data_scale FROM all_tab_columns WHERE owner = 'JGBS_HISOFT' AND table_name = p_table_name ORDER BY column_id; CURSOR c_pk_constraint (p_table_name VARCHAR2) IS SELECT ucc.column_name FROM all_constraints uc JOIN all_cons_columns ucc ON uc.constraint_name = ucc.constraint_name WHERE uc.owner = 'JGBS_HISOFT' AND uc.table_name = p_table_name AND uc.constraint_type = 'P' ORDER BY ucc.position; CURSOR c_table_comments (p_table_name VARCHAR2) IS SELECT comments FROM all_tab_comments WHERE owner = 'JGBS_HISOFT' AND table_name = p_table_name; CURSOR c_column_comments (p_table_name VARCHAR2) IS SELECT column_name, comments FROM all_col_comments WHERE owner = 'JGBS_HISOFT' AND table_name = p_table_name ORDER BY column_name; v_table_name VARCHAR2(30); v_new_table_name VARCHAR2(30); v_column_defs CLOB; v_partition_column VARCHAR2(30) := 'EDW_ETL_DT'; v_sql CLOB; v_table_comment CLOB; v_comment_sql CLOB; v_pk_sql CLOB; BEGIN FOR table_rec IN c_tables LOOP v_table_name := table_rec.table_name; v_new_table_name := 'TCL_UCL135_' || v_table_name; v_column_defs := ''; v_comment_sql := ''; v_pk_sql := ''; -- 获取注释 FOR tbl_comm IN c_table_comments(v_table_name) LOOP v_table_comment := tbl_comm.comments; EXIT; END LOOP;
03-27
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值