1. 程式人生 > >SQL隨記(四)

SQL隨記(四)

class tput false ica raise output 完整 not delet

1.for loop 循環

格式:for index in lower .. upper

    loop

    end loop;

 for i in 1 .. g_descTbl.count
    loop
      if ( g_descTbl(i).col_type = 12 )
      then
        utl_file.put( l_output, l_sep || g_descTbl(i).col_name || 
                      ‘ date ‘‘ddmmyyyyhh24miss‘‘ ‘); 
      else
        utl_file.put( l_output, l_sep || g_descTbl(i).col_name || 
                      ‘ char(‘ || 
                      to_char(g_descTbl(i).col_max_len*2) ||‘ )‘ );
      end if;
      l_sep := ‘,‘||g_nl ;
    end loop;

2.sql的異常處理:

(1)系統運行出錯時自動拋出

技術分享

(2)使用RAISE關鍵字拋出任何的異常,格式:RAISE exception_name;

declare
    is_exception EXCEPTION;
bein
    RAISE is_exception;
    end;

(3)使用Raise_Application_Error 拋出異常,它能拋出一個異常並給異常賦予一個錯誤號以及錯誤信息。格式: Raise_application_error(error_number,message[,true,false])

begin
      Raise_application_error(-20123,‘can not find error‘,true);
    end;

(4)用戶自定義異常

declare
ex_exception EXCEPTION;    --定義異常
PRAGMA EXCEPTION_INIT(ex_exception , -2292); --給自定義異常進行關聯
begin
DELETE FROM departments WHERE department_id = v_deptno;  
  IF SQL%NOTFOUND THEN  
      RAISE ex_exception ;                --拋出  
   END IF;  
EXCEPTION  
   WHEN ex_exception THEN                      --處理  
      DBMS_OUTPUT.PUT_LINE(‘違反數據完整性約束!‘);  
   WHEN OTHERS THEN  
      DBMS_OUTPUT.PUT_LINE(SQLCODE||‘---‘||SQLERRM); 
    end;

  

SQL隨記(四)