gpt4 book ai didi

sql - 我什么时候应该嵌套 PL/SQL BEGIN...END block ?

转载 作者:行者123 更新时间:2023-12-03 04:18:36 25 4
gpt4 key购买 nike

当看起来正确时,我有点随意地将代码小节分组在 BEGIN...END block 中。大多数情况下,当我正在处理较长的存储过程并且在某个位置需要临时变量时,我将仅为该部分代码声明它。当我想要识别和处理特定代码段抛出的异常时,我也会这样做。

还有什么其他原因需要在过程、函数或另一个较大的 PL/SQL block 中嵌套 block ?

最佳答案

当你想像这样在本地处理异常时:

begin
for emp_rec in (select * from emp) loop
begin
my_proc (emp_rec);
exception
when some_exception then
log_error('Failed to process employee '||emp_rec.empno);
end;
end loop;
end;

在此示例中,处理了异常,然后我们继续处理下一个员工。

另一个用途是声明具有有限范围的局部变量,如下所示:

declare
l_var1 integer;
-- lots of variables
begin
-- lots of lines of code
...
for emp_rec in (select * from emp) loop
declare
l_localvar integer := 0;
begin
-- Use l_localvar
...
end
end loop;

end;

请注意,想要这样做通常表明您的程序太大并且应该分解:

declare
l_var1 integer;
-- lots of variables
...
procedure local_proc (emp_rec emp%rowtype):
l_localvar integer := 0;
begin
-- Use l_localvar
...
end
begin
-- lots of lines of code
...
for emp_rec in (select * from emp) loop
local_proc (emp_rec);
end loop;

end;

关于sql - 我什么时候应该嵌套 PL/SQL BEGIN...END block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2334659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com