【发布时间】:2011-09-09 10:52:34
【问题描述】:
这是一个关于最佳实践的问题。我有一个类似的 PL/SQL 块
DECLARE
--work variables
PROCEDURE p1(in_parameter1, out_parameter1, out_parameter2...) IS
BEGIN
--do stuff
--select ( ... ) into ( ... ) from t1 where ( ... )
END;
PROCEDURE p2(in_parameter1, out_parameter1, out_parameter2...) IS
BEGIN
--do stuff
--insert/update tables
--do more stuff
END;
BEGIN -- MAIN PROCESS STARTS HERE
open c1;
fetch c1 into c1RowData;
EXIT WHEN c1%NOTFOUND
--call procedure1
--do stuff
--call procedure2
--do stuff
--do stuff
--call procedure1
--call procedure2
END;
/
EXIT;
过程 p1 和 p2 中的语句可能会引发异常(NO_DATA_FOUND、DUP_VAL_ON_INDEX、...)。
您认为处理这种异常的最佳方法是什么?它们应该在程序内部处理,还是您认为我应该用 TRY-CATCH 块围绕主体中的程序的每个调用?
【问题讨论】:
标签: stored-procedures exception-handling plsql