ORACLE的FOR迴圈在實際工作中的使用

hunterjoy發表於2011-06-18
      今天週六在使用者那裡加班,做資料庫中的資料處理工作,只能在沒有業務發生的時候進行,沒辦法!!!
        資料處理中涉及的語句,查詢某個欄位的值在表中是否存在:
declare
  var1 number;
begin
  for item in (SELECT TABLE_NAME,COLUMN_NAME
          FROM XG_TABLENAME
          union all
          SELECT TABLE_NAME,COLUMN_NAME
          FROM XG_TABLENAME_QT
               ) loop
     execute immediate  'select count(1)  from ' || item.table_name ||
                         ' where ' || item.column_name || ' = ' ||  '''150422196909030616'''
            into  var1;
      if  var1<>0
      then
          dbms_output.put_line('var1:' || var1 );
          dbms_output.put_line( '表:' || item.table_name || '列:' ||item.column_name );
      end if ;
    end loop;
end;
 
     批次刪除重複資料:
     declare
  var1 number;
begin
  for item in (  
   SELECT NSRSBH,ZSXH,YZPZXH  FROM BAK_SB_PLKK_CFJL_ZSXH_YZPZXH E
   WHERE E.ROWID>
   (SELECT MIN(X.ROWID) FROM BAK_SB_PLKK_CFJL_ZSXH_YZPZXH X WHERE X.NSRSBH=E.NSRSBH)
               ) loop
     execute immediate  'DELETE FROM SB_SPXX WHERE zsxh= ''' || item.ZSXH||'''';
     execute immediate  'DELETE FROM SB_ZSXX WHERE zsxh= ''' || item.ZSXH||'''';
     execute immediate  'DELETE FROM sb_yjnsk_lsz WHERE pzhm= ''' || item.YZPZXH||'''';
   
     commit;
    end loop;
end;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/543979/viewspace-700166/,如需轉載,請註明出處,否則將追究法律責任。

相關文章