当前位置:网站首页>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-cluster mode (master-slave replication mode, sentinel mode, clustering mode)
- 腾讯大咖分享 | 腾讯Alluxio(DOP)在金融场景的落地与优化实践
- 25K测试老鸟6年经验的面试心得,四种公司、四种问题…
- 淘系资深工程师整理的300+项学习资源清单(2021最新版)
- 洛谷小游戏大全(用洛谷的人都得知道)
- 虚拟现实房产展示系统提前预见未来装修效果
- 51单片机外设篇:点阵式LCD
- leetcode 665. Non-decreasing Array 非递减数列(中等)
- 为什么4个字节的float要比8个字节的long大呢?
- 面试官:设计“抖音”直播功能测试用例吧
猜你喜欢

C语言中i++和++i在循环中的差异性

Introduction to coredns

Meta公司新探索 | 利用Alluxio数据缓存降低Presto延迟

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

驱动页面性能优化的3个有效策略

There are more and more talents in software testing. Why are people still reluctant to take the road of software testing?

Detailed explanation of interface in Go language

测试环境要多少?从成本与效率说起

Install and use Google Chrome

无代码生产新模式探索
随机推荐
Introduction to coredns
Browser onload event
非关系型数据库MongoDB的特点及安装
目标检测重要概念——IOU、感受野、空洞卷积、mAP
测试技术之APP蓝牙连接测试
如何优化OpenSumi终端性能?
Point Density-Aware Voxels for LiDAR 3D Object Detection 论文笔记
A list of 300+ learning resources compiled by senior engineers of the Tao Department (the latest version in 2021)
kubernetes 亲和、反亲和、污点、容忍
21 Day Learning Challenge Schedule
国际顶会OSDI首度收录淘宝系统论文,端云协同智能获大会主旨演讲推荐
Linux CentOS8安装Redis6
leetcode一步解决链表反转问题
程序员最重要的能力是什么?
CPU使用率和负载区别及分析
C语言入门实战(13):十进制数转二进制
51 microcontroller peripherals article: dot-matrix LCD
使用TinkerPop框架对GDB增删改查
关于web应用的目录结构
制作web3d动态产品展示的优点