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)系统运行出错时自动抛出

SQL随记(四)

(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;

  

上一篇:PPK谈JS笔记第一弹


下一篇:填坑专记-手脱FSG壳