SQL随记(四)

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;

  

原文地址:https://www.cnblogs.com/lirenzhujiu/p/7058721.html