存储过程判断若个表中是否存在某个名称的字段

--在存储过程执行的用户下,新建两个个表
--建表代码
drop table tab_name;

create table tab_name
(table_name varchar2(20));

drop table tab_remark;

create table tab_remark
(
table_name varchar2(20),
remark varchar2(20)
);


--tab_name存放代码表的名称,先执行获取表名称的语句,
insert into tab_name
select table_name from user_tables;
--tab_remark存放核对的结果;

CREATE OR REPLACE PROCEDURE "DATACODE" (MYARG IN varchar2)
IS
  v_num number(5);
  cursor cur_table is select table_name from tab_name;
  v_tablename varchar2(20);
  v_count number(5);
  v_sql varchar2(400);
  v_tybm varchar2(36);
  v_unitid varchar2(6);
  no_table exception;
  pragma exception_init(no_table,-00904);
begin
  select count(*) into v_count from tab_name;
  open cur_table;
  fetch cur_table into v_tablename;
     for i in 1..v_count loop 
         v_sql :='select tybm,unitid from '|| v_tablename || ' where rownum<2';
            begin
               execute immediate v_sql into v_tybm,v_unitid;
               insert into tab_remark values(v_tablename,'cunzai');
               commit;
                 exception
                    when no_table then
                    insert into tab_remark values(v_tablename,'bucunzai'); 
                    commit; 
                    when no_data_found then
                    insert into tab_remark values(v_tablename,'kongzhi');
                    commit;
             end;
             fetch cur_table into v_tablename;
     end loop;
  close cur_table;          
end;




两种异常的处理方法。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28803801/viewspace-768477/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/28803801/viewspace-768477/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值