Oracle:if then else 中的嵌套块
Oracle: Nested blocks inside a if then else
我只是想知道我不是 PL/SQL 方面的真正专家,所以这可能已经得到解答,但我们能否在 if then else 语句中嵌套 pl/sql 块。例如:
DECLARE
cnt number;
<<PARENT BLOCK>>
BEGIN
SELECT COUNT(1) INTO n_cnt_iti
FROM A JOIN B ON ...
.....
....
IF n_cnt_iti = 0 THEN
flag = 0
ELSE
<<CHILD BLOCK>>
DECLARE
...
BEGIN
...
我之所以这样做,是因为第一个查询是否用于初始验证,如果失败,我必须再次声明 pl/sql 块内部的变量
是的,你可以做到。每个语句块(在 begin..end 之间)都可以有一个 declare 子句,它声明变量甚至游标和局部函数,它们只在该块的范围内。
但是在存储过程的顶部声明变量也没有坏处。声明它们不会消耗太多性能或内存,所以如何做完全取决于个人喜好。
我只是想知道我不是 PL/SQL 方面的真正专家,所以这可能已经得到解答,但我们能否在 if then else 语句中嵌套 pl/sql 块。例如:
DECLARE
cnt number;
<<PARENT BLOCK>>
BEGIN
SELECT COUNT(1) INTO n_cnt_iti
FROM A JOIN B ON ...
.....
....
IF n_cnt_iti = 0 THEN
flag = 0
ELSE
<<CHILD BLOCK>>
DECLARE
...
BEGIN
...
我之所以这样做,是因为第一个查询是否用于初始验证,如果失败,我必须再次声明 pl/sql 块内部的变量
是的,你可以做到。每个语句块(在 begin..end 之间)都可以有一个 declare 子句,它声明变量甚至游标和局部函数,它们只在该块的范围内。
但是在存储过程的顶部声明变量也没有坏处。声明它们不会消耗太多性能或内存,所以如何做完全取决于个人喜好。