当前位置:网站首页>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;
边栏推荐
猜你喜欢
51单片机外设篇:红外通信
51单片机外设篇:DS18B20
【漫画】2021满分程序员行为对照表(最新版)
非关系型数据库MongoDB的特点及安装
Stress testing and performance analysis of node projects
区块元素、内联元素(<div>元素、span元素)
Introduction to coredns
Features and installation of non-relational database MongoDB
pytorch basic operations: classification tasks using neural networks
C语言中i++和++i在循环中的差异性
随机推荐
Cyber Security Learning - Intranet Penetration 4
leetcode一步解决链表反转问题
Block elements, inline elements (
elements, span elements)淘系资深工程师整理的300+项学习资源清单(2021最新版)
51单片机外设篇:点阵式LCD
Three methods of importing sql files in MySQL
[PSQL] window function, GROUPING operator
51 MCU peripherals: ADC
聪明人的游戏提高篇:第三章第二课:“桐桐数”(number)
服务器的单机防御与集群防御
深度学习——CNN实现MNIST手写数字的识别
程序员写PPT的小技巧
TikTok平台的两种账户有什么区别?
测试环境要多少?从成本与效率说起
字节面试题:如何保证缓存和数据库的一致性
An advanced method for solving palindromes
eggjs controller层调用controller层解决方案
测试技术之APP蓝牙连接测试
navicat connects to MySQL and reports an error: 1045 - Access denied for user 'root'@'localhost' (using password YES)
腾讯大咖分享 | 腾讯Alluxio(DOP)在金融场景的落地与优化实践