pl/sql之神奇的嵌套与变量生命周期

pl/sql代码块的嵌套

pl/sql代码块为顺序执行,在嵌套了一个代码块后仍顺序执行,遇到return后,return下的语句不再执行直接结束外层子句

举个栗子吧:

--示例1
declare
    a number:=1;
begin
    	declare
        	b number:=1;
    	begin
        	dbms_output.put_line('b的值:'||b);
    	end;
    dbms_output.put_line('a的值:'||a);
end;
--示例2
declare
    a number:=1;
begin
    	declare
        	b number:=1;
    	begin
        	return;
        	dbms_output.put_line('b的值:'||b);
    	end;
    dbms_output.put_line('a的值:'||a);
end;

在这里插入图片描述

循环的嵌套

  • for 循环

for循环套for循环大致执行思路如下:首先外部循环从第一个值开始,进行相关操作进入内部循环,内部循环走完一轮再到外部循环,以此类推外部循环再到第二个值…

--示例1
begin
    for i in 1..3 loop
        dbms_output.put('Hello ');
        for s in 1..3 loop
            dbms_output.put('World ');
        end loop;
            dbms_output.put_line(' ');
    end loop;
end;
--示例二(遇到return后内外循环均停止)
begin
    for i in 1..3 loop
        dbms_output.put('Hello ');
        for s in 1..3 loop
            dbms_output.put('World ');
            dbms_output.put_line(' ');
            return;
        end loop;
            dbms_output.put_line(' ');
    end loop;
end;

在这里插入图片描述

各个变量生命周期

生命周期用户可以理解为一个变量从产生到灭亡的过程

  • declare处声明的变量生命周期

declare处变量在整个代码块结束(end后)释放

declare
    a number:=50;
begin
    dbms_output.put_line('外层a的值(嵌套子句执行前):'||a);
        declare
            a number:=10;
        begin
            dbms_output.put_line('内层a的值:'||a);
        end;
    dbms_output.put_line('外层a的值(嵌套子句执行后):'||a);
end;

在这里插入图片描述

  • for…in之间的变量的生命周期

for…in 之间的变量在for循环结束后释放

在这里插入图片描述

declare处变量名与for循环中变量名可一致且互不干预

declare
    i number;
begin
    i:=9;
    for i in 1..2 loop
        dbms_output.put_line('局部变量(for)中i的值:'||i);
    end loop;
    dbms_output.put_line('全局变量(declare处)i的值:'||i);
end;

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值