当前位置:网站首页>pl/sql之神奇的嵌套与变量生命周期
pl/sql之神奇的嵌套与变量生命周期
2022-08-02 05:13:00 【赟文武】
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;

边栏推荐
- Three methods of importing sql files in MySQL
- ATM系统
- Redis数据库
- About the directory structure of the web application
- Use the browser's local storage to realize the function of remembering the user name
- 机器学习——支持向量机原理
- BGP experiment (route reflector, federation, route optimization)
- 关于鸿蒙系统 JS UI 框架源码的分析
- APP Bluetooth connection test of test technology
- LeetCode brush topic series - 787 K station transfer within the cheapest flight
猜你喜欢
随机推荐
LeetCode brush topic series - 787 K station transfer within the cheapest flight
点云旋转到参考坐标系方向(最小方向包围盒方法)
Say good woman programmers do testing have an advantage?More than a dozen interview, abuse of cry ~ ~ by the interviewer
构造方法、成员变量、局部变量
对node工程进行压力测试与性能分析
整合ssm(一)
网安学习-内网渗透4
Redis集群模式
leetcode 665. Non-decreasing Array 非递减数列(中等)
金山云团队分享 | 5000字读懂Presto如何与Alluxio搭配
深度学习——CNN实现MNIST手写数字的识别
软件测试的需求人才越来越多,为什么大家还是不太愿意走软件测试的道路?
高防服务器防御的原理是什么
非关系型数据库MongoDB的特点及安装
无代码生产新模式探索
PIL与numpy格式之间的转换
kubernetes affinity, anti-affinity, taint, tolerance
为什么4个字节的float要比8个字节的long大呢?
【OpenCV从入门到实践】图像处理技术[像素](全网最详细)
Redis-cluster mode (master-slave replication mode, sentinel mode, clustering mode)









