使用嵌套块

在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相关推荐

  1. PL/SQL集合类型的整理学习

    http://log-cd.iteye.com/blog/521177 PL/SQL集合类型是类似于高级语言数组的一种复合数据类型,集合类型包括索引表(PL/SQL表).嵌套表(Nested Tabl ...

  2. oracle输入数字类型吗,PL/SQL Number数字类型函数

    PL/SQL Number数字类型函数 更新时间:2007年03月21日 00:00:00   作者: ABS(x) 函数,此函数用来返回一个数的绝对值. ACOS(x)函数,返回X的反余弦值.X范围 ...

  3. Oracle:PL/SQL 中如何使用Array

    http://tech.163.com/05/0701/10/1NIODMQS00091589.html 因为在PL/SQL 中并没有数组. 这是偶查资料找的范例和自己写的范例来解释如何在PL/SQL ...

  4. Oracle数据库之PL/SQL程序基础设计

    一.PL/SQL块结构 前边我们已经介绍了PL/SQL块的结构,再来回顾一下: DECLARE /** 声明部分--定义常量.变量.复杂数据类型.游标.用户自定义异常*/ BEGIN /** 执行部分 ...

  5. PostgreSQL Oracle 兼容性之 - PL/SQL FORALL, BULK COLLECT

    Oracle PL/SQL 开发的童鞋,一定对O家的bulk批量处理的性能很是赞赏吧. 但是PostgreSQL用户请不要垂涎,作为学院派和工业界的一颗璀璨明珠. 开源数据库PostgreSQL,也有 ...

  6. PL/SQL Developer中,存储过程无法调试的问题解决办法

    在Oracle10中新建了一个用户,然后编写存储过程在PL/SQL Developer中调试,提示 ORA-0131: Insufficient privileges. Note: Debugging ...

  7. Oracle笔记 八、PL/SQL跳转/判断/循环语句块

    --goto跳转语句 --在goto 后,跳转到相应的语句,然后执行该语句和后面所有语句 begin dbms_output.put_line('goto开始了'); goto c; --不被执行 d ...

  8. 二十四、oracle pl/sql 变量

    一.变量介绍 在编写pl/sql程序时,可以定义变量和常量:在pl/sql程序中包括有: 1).标量类型(scalar) 2).复合类型(composite) --用于操作单条记录 3).参照类型(r ...

  9. 第七章 控制PL/SQL错误

    一.错误控制一览 在PL/SQL中,警告或错误被称为异常.异常可以是内部(运行时系统)定义的或是用户定义的.内部定义的案例包括除零操作和内存溢出等.一些常见的内部异常都有一个预定义的名字,如ZERO_ ...

最新文章

  1. ES doc_values介绍2——本质是field value的列存储,做聚合分析用,ES默认开启,会占用存储空间...
  2. 课程介绍 复习 创建对象的三种方式 自定义构造函数创建对象 工厂模式创建对象
  3. 版本管理工具:git svn 的比较
  4. 通过路由远程计算机重启,华为无线路由器三种常用重启的方法
  5. codeforces Labyrinth
  6. python通讯录管理系统 tk_通讯录管理系统课程设计
  7. verilog 中生成块的相关知识
  8. 安装程序Repack攻略之MSI篇
  9. 从《色戒》,看人性的欲望
  10. cad编辑节点快捷键是什么_CAD所有快捷键
  11. Java ques: Exception in thread “main“ java.lang.ClassNotFoundException
  12. php中x22是什么意思,我想问一下:联想s22e和x22区别哪款好用点??真实反馈一下!!...
  13. 计算机管理员权限设置在哪里设置方法,计算机管理员权限在哪里设置 电脑系统如何设置管理员权限...
  14. 使用emitter的坑,
  15. 各台平台电商API接口吊桶,API接口分类
  16. 【STM32】实战2—用STM32产生PWM信号驱动舵机MG996R(一)
  17. QCustomPlot画带数值标签的柱状图
  18. 坐标系转换--椭球面多项式拟合公式转换模型变换关系理解
  19. WebGL编程指南-24 同时使用漫反射光和环境反射光、立方体平移旋转缩放变换时漫反射光和环境反射光处理
  20. Oracle数据库中emp表的基本操作

热门文章

  1. AI:IPPR的数学表示-CNN方法
  2. PCL:解决PCL和OpenCV冲突的方法
  3. 蓝奏云文件上传php源码_蓝奏云客户端 v0.3.1,第三方蓝奏网盘电脑版
  4. SAP面向iOS设备推Cloud Platform SDK工具
  5. BZOJ 2436 NOI嘉年华(单调优化)
  6. PHP建立和删除目录
  7. hadoop-hdfs-ha配置-搭建
  8. Unknown/unsupported param List(--dist-cache-conf
  9. redis+celery+django设置外网可访问
  10. jQuery和Vue的区别(转载)