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 子句,它声明变量甚至游标和局部函数,它们只在该块的范围内。

但是在存储过程的顶部声明变量也没有坏处。声明它们不会消耗太多性能或内存,所以如何做完全取决于个人喜好。