当前位置:网站首页>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;

边栏推荐
- Redis database
- APP Bluetooth connection test of test technology
- Brush LeetCode topic series - 10. Regular expression match
- 非关系型数据库MongoDB的特点及安装
- C language entry combat (13): decimal number to binary
- 配合蓝牙打印的encoding-indexes.js文件内容:
- Features and installation of non-relational database MongoDB
- 区块元素、内联元素(<div>元素、span元素)
- A list of 300+ learning resources compiled by senior engineers of the Tao Department (the latest version in 2021)
- Say good woman programmers do testing have an advantage?More than a dozen interview, abuse of cry ~ ~ by the interviewer
猜你喜欢
随机推荐
Introduction to coredns
配合蓝牙打印的encoding-indexes.js文件内容:
上海交大牵手淘宝成立媒体计算实验室:推动视频超分等关键技术发展
goroutine (coroutine) in go language
Redis数据库
【OpenCV从入门到实践】图像处理技术[像素](全网最详细)
关于鸿蒙系统 JS UI 框架源码的分析
洛谷小游戏大全(用洛谷的人都得知道)
How Navicat Connects to MySQL
ATM系统
Deep learning - CNN realizes the recognition of MNIST handwritten digits
淘系资深工程师整理的300+项学习资源清单(2021最新版)
点云旋转到参考坐标系方向(最小方向包围盒方法)
线程基础(一)
eggjs controller层调用controller层解决方案
H5 access payment process - WeChat payment & Alipay payment
5年在职经验之谈:2年功能测试、3年自动化测试,从入门到不可自拔...
165.比较版本号
Automated operation and maintenance tools - ansible, overview, installation, module introduction
C语言中i++和++i在循环中的差异性









