PL/SQL是 Procedure Language & Structured Query Language 的缩写

PL/SQL是对SQL语言存储过程语言的扩展

PL/SQL程序由三个块组成,即声明部分、执行部分、异常处理部分。

在语句块的声明部分对变量声明,声明一个变量的语法是:
variable_name [ constant ] type [ not null ] [:=value]
其中:
variable_name 为变量名
type 为类型
value 为变量的初值

PL/SQL结构
DECLARE
/* 声明部分: 在此声明PL/SQL用到的变量,类型及游标,以及局部的存储过程和函数 */
BEGIN
/* 执行部分: 过程及SQL 语句 , 即程序的主要部分 */
EXCEPTION
/* 执行异常部分: 错误处理 */
END;

PL/SQL的流程控制语句, 包括如下三类 :
条件语句: IF 语句 CASE语句
循环语句: LOOP语句, EXIT语句
顺序语句: GOTO语句, NULL语句

IF语句的基本形式为 :
IF <布尔表达式> THEN
PL/SQL 和 SQL语句
END IF;

IF <布尔表达式> THEN
PL/SQL 和 SQL语句
ELSE
其它语句
END IF;

IF语句的复杂形式为 :
IF <布尔表达式> THEN
PL/SQL 和 SQL语句
ELSIF < 其它布尔表达式> THEN
其它语句
ELSIF < 其它布尔表达式> THEN
其它语句
…… ……
ELSE
其它语句
END IF;

CASE语句的基本形式为 :
CASE selector
WHEN expression1 THEN result1
WHEN expression2 THEN result2
WHEN expressionN THEN resultN
[ ELSE resultN+1]
END CASE;

循环语句
简单循环语句的一般形式:
LOOP
要执行的语句;
EXIT WHEN <条件语句> /*条件满足,退出循环语句*/
END LOOP;
其中:EXIT WHEN 子句是必须的,否则循环将无法停止。

WHILE 循环语句的一般形式:
WHILE <布尔表达式> LOOP
要执行的语句;
END LOOP;

FOR循环语句的一般形式:
FOR 循环计数器 IN [ REVERSE ] 下限 .. 上限 LOOP
要执行的语句;
END LOOP;
其中:
每循环一次,循环变量自动加1;使用关键字REVERSE,循环变量自动减1
跟在IN REVERSE 后面的数字必须是从小到大的顺序,但不一定是整数,可以是能够转换成整数的变量或表达式
可以使用EXIT WHEN子句退出循环

 综合实例:

 declare
v_no number(4) :=7369; --声明并初始化变量
begin
select sal into v_no from emp where empno=v_no; if v_no>300 then v_no:=100; --if--then
end if; while v_no<=200 --while
loop
v_no := v_no+1;
dbms_output.put_line(v_no);
end loop; for v_no in reverse 0 .. 200--for
loop --loop dbms_output.put_line(v_no); end loop;
end;

PL/SQL程序设计、流程控制的更多相关文章

  1. PL/SQL 03 流程控制

    --IF语法IF condition THEN  statements;[ELSIF condition THEN  statements;][ELSE  statements;]END IF; -- ...

  2. [推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序设计简介(千里之行,始于足下)

    原文:[推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序设计简介(千里之行,始于足下) [推荐]ORACLE PL/SQL编程详解之一: PL/SQL 程序设计简介(千里之行,始于足下 ...

  3. 每周一书《Oracle 12 c PL(SQL)程序设计终极指南》

    本周为大家送出的书是<Oracle 12 c PL(SQL)程序设计终极指南>,此书由机械工业出版社出版, 孙风栋,王澜,郭晓惠 著. 内容简介: <Oracle 12c PL/SQ ...

  4. oracle pl/sql 程序设计 历史笔记整理

    20131016 周三 oracle pl/sql 程序设计 第2章 创建并运行pl/sql代码 sqlplus yjkhecc/yjkhecc@10.85.23.92:1521/orcl 在java ...

  5. Oracle数据库之PL/SQL程序设计简介

    PL/SQL程序设计简介 一.什么是PL/SQL? PL/SQL是 Procedure Language & Structured Query Language 的缩写. ORACLE的SQL ...

  6. PL/SQL之--流程控制语句

    一.简介 像编程语言一样,oracle PL/SQL也有自己的流程控制语句.通过流程控制语句,我们可以在PL/SQL中实现一下比较复杂的业务逻辑操作.而无需到程序中去控制,在一定程度上提高了效率,这也 ...

  7. PL/SQL程序设计

    1 PL/SQL简介 1 什么是PL/SQL? PL/SQL是 Procedure Language & Structured Query Language 的缩写.PL/SQL是对SQL语言 ...

  8. 09 高效的PL/SQL程序设计

    程序包 Package 断开了依赖链 实验依赖关系: <1> 首先不使用包 -- 创建表 CREATE table t (x int); -- 创建视图 create view v as ...

  9. SQL Server 流程控制

    流程控制语句: BEGIN ... END WAITFOR GOTO WHILE IF ... ELSE BREAK RETURN CONTINURE   1.BEGIN ... END BEGIN ...

随机推荐

  1. git如何merge github forked repository里的代码更新?(转)

    参考内容:git如何merge github forked repository里的代码更新? [refer to ]http://www.haojii.com/2011/08/how-to-git- ...

  2. Xshell中文乱码怎么处理?

    改成如下图:

  3. Oracle12c中容错&amp;性能新特性之表空间组

    1.        简介 表空间组可以使用户消耗来自多个表空间的临时表空间.表空间组有如下特点: 1)      至少包含一个表空间.表空间组中包含的最大表空间数没有限制. 2)      和表空间共 ...

  4. [LeetCode] 94. Binary Tree Inorder Traversal(二叉树的中序遍历) ☆☆☆

    二叉树遍历(前序.中序.后序.层次.深度优先.广度优先遍历) 描述 解析 递归方案 很简单,先左孩子,输出根,再右孩子. 非递归方案 因为访问左孩子后要访问右孩子,所以需要栈这样的数据结构. 1.指针 ...

  5. AWVS和AppScan使用代理进行扫描教程

    一.说明 扫描网站时,一是可能某些网站网络不能直接访问,二是可能不想曝露本机IP.这时要进行处理. 第一个方法是如果有vpn直接登vpn,vpn的话由于是直接修改操作系统层次的网络,扫描器不需要额外做 ...

  6. Linux只下载不安装软件包

    有时我们并不需要安装软件而只要下载软件包. 包格式 命令 命令所属包 命令下载格式 rpm yumdownloader yum-utils yumdownloader package_name deb ...

  7. linux 定时任务 日志记录

    1  不记录日志 > /dev/null 2>&1 2 日志记录追加到指定文件 >> /path/mylog.log 2>&1

  8. tomcat vue webpack vue-router 404

    社区已经有结局方案了, http://blog.csdn.net/hayre/article/details/70145513

  9. ORM版学员管理系统1

    ORM版学员管理系统 班级表 表结构 class Class(models.Model): id = models.AutoField(primary_key=True) # 主键 cname = m ...

  10. sass和scss的区别

    页面引入的时候还是引入的css文件 因为sass和scss都是一种css的预处理工具 目的最后都是生成css文件 sass不带{}和:是基于Ruby 写出来的,严格的缩进方式来控制 scss带这两个 ...