PL/SQL - 03
使用嵌套块
在PL/SQL块中可以嵌套子块,嵌套的块既可以放在外部块的执行部分,也可以放在异常处理部分,但是不能放在外部块声明部分
内部嵌套块可以访问外部嵌套块声明的变量,但是外部声明块不能访问内部声明块中的变量
declare
v_deptno number(2) := 50 ;
v_dname varchar2(12) ;
begin
begin
select dname into v_dname from scott.dept where deptno = v_deptno ;
dbms_output.put_line('您好查找的部门是: '|| v_dname);
end ;
declare
v_loc varchar2(10) := '深圳南山';
begin
update SCOTT.DEPT set loc = v_loc where deptno = v_deptno ;
dbms_output.put_line('在内嵌块中成功更新部门资料! ');
end ;
exception when no_data_found
then begin
insert into scott.dept values(v_deptno,'信息部','深圳') ;
dbms_output.put_line('在异常处理模块成功恢复资料!');
exception when others
then
dbms_output.put_line('未知异常!');
end;
end;
此段程序共有三个begin--end结构。
第一组begin-end 结构是引导整个程序块,所以是主结构;
第二个 是用来查询部门信息的
begin
select dname into v_dname from scott.dept where deptno = v_deptno ;
dbms_output.put_line('您好查找的部门是: '|| v_dname);
end ;
其实这个begin-end 结构可以去掉,并不影响程序执行
第三个是用来更新部门信息的 ,其完整代码如下
declare
v_loc varchar2(10) := '深圳南山';
begin
update SCOTT.DEPT set loc = v_loc where deptno = v_deptno ;
dbms_output.put_line('在内嵌块中成功更新部门资料! ');
end ;
这里的begin-end 结构是不可以去掉的 ,因为在后续语句执行之前 进行了变量定义,
即:declare
v_loc varchar2(10) := '深圳南山';
在一个单一的begin-end结构中是不能再重新定义变量的,除非此时已经决定此变量不属于此begin-end结构,所以这里的begin-end不能删除。
附:使用命名嵌套块
<<外部块>>
declare
v_deptno number(2) := 50 ;
v_dname varchar2(12) ;
begin
<<查询员工名称块>>
begin
select dname into v_dname from scott.dept where deptno = v_deptno ;
dbms_output.put_line('您好查找的部门是: '|| v_dname);
end ;
<<更新员工部门块>>
declare
v_loc varchar2(10) := '深圳南山';
begin
update SCOTT.DEPT set loc = v_loc where deptno = v_deptno ;
dbms_output.put_line('在内嵌块中成功更新部门资料! ');
end ;
exception when no_data_found
then begin
insert into scott.dept values(v_deptno,'信息部','深圳') ;
dbms_output.put_line('在异常处理模块成功恢复资料!');
exception when others
then
dbms_output.put_line('未知异常!');
end;
end;
转载于:https://blog.51cto.com/wyhstar460/1638875
PL/SQL - 03相关推荐
- PL/SQL集合类型的整理学习
http://log-cd.iteye.com/blog/521177 PL/SQL集合类型是类似于高级语言数组的一种复合数据类型,集合类型包括索引表(PL/SQL表).嵌套表(Nested Tabl ...
- oracle输入数字类型吗,PL/SQL Number数字类型函数
PL/SQL Number数字类型函数 更新时间:2007年03月21日 00:00:00 作者: ABS(x) 函数,此函数用来返回一个数的绝对值. ACOS(x)函数,返回X的反余弦值.X范围 ...
- Oracle:PL/SQL 中如何使用Array
http://tech.163.com/05/0701/10/1NIODMQS00091589.html 因为在PL/SQL 中并没有数组. 这是偶查资料找的范例和自己写的范例来解释如何在PL/SQL ...
- Oracle数据库之PL/SQL程序基础设计
一.PL/SQL块结构 前边我们已经介绍了PL/SQL块的结构,再来回顾一下: DECLARE /** 声明部分--定义常量.变量.复杂数据类型.游标.用户自定义异常*/ BEGIN /** 执行部分 ...
- PostgreSQL Oracle 兼容性之 - PL/SQL FORALL, BULK COLLECT
Oracle PL/SQL 开发的童鞋,一定对O家的bulk批量处理的性能很是赞赏吧. 但是PostgreSQL用户请不要垂涎,作为学院派和工业界的一颗璀璨明珠. 开源数据库PostgreSQL,也有 ...
- PL/SQL Developer中,存储过程无法调试的问题解决办法
在Oracle10中新建了一个用户,然后编写存储过程在PL/SQL Developer中调试,提示 ORA-0131: Insufficient privileges. Note: Debugging ...
- Oracle笔记 八、PL/SQL跳转/判断/循环语句块
--goto跳转语句 --在goto 后,跳转到相应的语句,然后执行该语句和后面所有语句 begin dbms_output.put_line('goto开始了'); goto c; --不被执行 d ...
- 二十四、oracle pl/sql 变量
一.变量介绍 在编写pl/sql程序时,可以定义变量和常量:在pl/sql程序中包括有: 1).标量类型(scalar) 2).复合类型(composite) --用于操作单条记录 3).参照类型(r ...
- 第七章 控制PL/SQL错误
一.错误控制一览 在PL/SQL中,警告或错误被称为异常.异常可以是内部(运行时系统)定义的或是用户定义的.内部定义的案例包括除零操作和内存溢出等.一些常见的内部异常都有一个预定义的名字,如ZERO_ ...
最新文章
- ES doc_values介绍2——本质是field value的列存储,做聚合分析用,ES默认开启,会占用存储空间...
- 课程介绍 复习 创建对象的三种方式 自定义构造函数创建对象 工厂模式创建对象
- 版本管理工具:git svn 的比较
- 通过路由远程计算机重启,华为无线路由器三种常用重启的方法
- codeforces Labyrinth
- python通讯录管理系统 tk_通讯录管理系统课程设计
- verilog 中生成块的相关知识
- 安装程序Repack攻略之MSI篇
- 从《色戒》,看人性的欲望
- cad编辑节点快捷键是什么_CAD所有快捷键
- Java ques: Exception in thread “main“ java.lang.ClassNotFoundException
- php中x22是什么意思,我想问一下:联想s22e和x22区别哪款好用点??真实反馈一下!!...
- 计算机管理员权限设置在哪里设置方法,计算机管理员权限在哪里设置 电脑系统如何设置管理员权限...
- 使用emitter的坑,
- 各台平台电商API接口吊桶,API接口分类
- 【STM32】实战2—用STM32产生PWM信号驱动舵机MG996R(一)
- QCustomPlot画带数值标签的柱状图
- 坐标系转换--椭球面多项式拟合公式转换模型变换关系理解
- WebGL编程指南-24 同时使用漫反射光和环境反射光、立方体平移旋转缩放变换时漫反射光和环境反射光处理
- Oracle数据库中emp表的基本操作
热门文章
- AI:IPPR的数学表示-CNN方法
- PCL:解决PCL和OpenCV冲突的方法
- 蓝奏云文件上传php源码_蓝奏云客户端 v0.3.1,第三方蓝奏网盘电脑版
- SAP面向iOS设备推Cloud Platform SDK工具
- BZOJ 2436 NOI嘉年华(单调优化)
- PHP建立和删除目录
- hadoop-hdfs-ha配置-搭建
- Unknown/unsupported param List(--dist-cache-conf
- redis+celery+django设置外网可访问
- jQuery和Vue的区别(转载)