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

边栏推荐
- [PSQL] window function, GROUPING operator
- How much does a test environment cost? Start with cost and efficiency
- 双重for循环案例(用js打印九九乘法表)
- 回文串求解的进阶方法
- Go language study notes - grpc serverclient protobuf Go language from scratch
- Polar Parametrization for Vision-based Surround-View 3D Detection 论文笔记
- 25K测试老鸟6年经验的面试心得,四种公司、四种问题…
- eggjs controller层调用controller层解决方案
- Different ways of shell scripting
- MySQL数据表的基本操作和基于 MySQL数据表的基本操作的综合实例项目
猜你喜欢

Navicat cannot connect to mysql super detailed processing method

Use the browser's local storage to realize the function of remembering the user name

Redis(十一) - 异步优化秒杀

Install and use Google Chrome

goroutine (coroutine) in go language

双重for循环案例(用js打印九九乘法表)

Important concepts of target detection - IOU, receptive field, hole convolution, mAP

Redis-----非关系数据库

25K test old bird's 6-year experience in interviews, four types of companies, four types of questions...

5款经典代码阅读器的使用方案对比
随机推荐
leetcode一步解决链表合并问题
Redis-----非关系数据库
深度学习——CNN实现MNIST手写数字的识别
golang generics
面试官:设计“抖音”直播功能测试用例吧
Polar Parametrization for Vision-based Surround-View 3D Detection 论文笔记
使用TinkerPop框架对GDB增删改查
线程基础(一)
如何优化OpenSumi终端性能?
[PSQL] 窗口函数、GROUPING运算符
Brush LeetCode topic series - 10. Regular expression match
C language entry combat (13): decimal number to binary
家用 NAS 服务器(4)| MergerFS和SnapRaid数据定时备份
About the directory structure of the web application
洛谷小游戏大全(用洛谷的人都得知道)
字节面试题:如何保证缓存和数据库的一致性
OAuth 授权协议 | 都云原生时代了,我们应该多懂一点OAuth ?
自动化运维工具——ansible、概述、安装、模块介绍
Redis集群模式
51 MCU peripherals: ADC