oracle数据库开发与应用 数据库编程 16
oracle数据库开发与应用 数据库编程 16
智汇君oracle数据库开发与应用 数据库编程 16
PL/SQL编程
PL/SQL编程的作用
1 | 也学过一些函数,如DECODE,具有简单的逻辑判断功能,但是,距离真正的结构化程序设计还相去甚远。于是提出这样一个问题: |
1 | PL/SQL是Oracle数据库独有的一种程序语言,是Oracle 数据库对 SQL语言的扩展。 |
PL/SQL 编程的优点
1 | 很明显,使用了PL/SQL编程之后,具有以下优点:能够使一组 SQL语句的功能更具模块化,便于维护,可以对程序中的错误进行自动处理,保证安全性。 |
最简单的 PL/SQL 程序
1 | PL/SQL程序块由4个基本部分组成:声明、执行体开始、异常处理、执行体结束下面是4个部分的基本结构: |
1 | BEGIN |
1 | DBMS_OUTPUT.PUT_LINE函数是Oracle系统内部定义的函数,表示输出一个字符串并换行。如果不想换行,可以用DBMS_OUTPUT.PUT函数。 |
在 PL/SQL 中使用变量 DECLARE
1 | 在PL/SQL的声明部分声明变量、常量的基本语法如下: |
1 | 以上语法中: |
变量的类型参考表中某个列的类型 %TYPE
1 | 如果要定义该变量的类型和TSTUDENT表中的STUNAME类型相同可以用“表名.列名%TYPE"来表示某表中某列的类型。例如: |
将 SQL查询的结果存入变量
1 | 在PL/SQL语句中通过SELECT-INTO语句将内容存入变量: |
1 | 在SELECT-INTO中,对于简单变量,查询语句必须并且只能返回一行。如果返回多行或没有返回任何,则报错 |
1 | 在PL/SQL中,不允许SELECT语句单独运行,例如 |
使用记录变量
1 | 能否定义一个变量,既不是包含字符串数据,也不是包含日期数据,而是包含T_STUDENT表中的一整行内容组合在一起的数据呢?例如,一个变量,包含的内容有4个部分(类似Java中的一个对象),如图16-6所示记录变量可以完成这个功能。记录变量属于复合变量(组合变量),在复合变量中包含多个小变量(字段),每个小变量都可以单独存放值。 |
自行创建记录变量的类型
1 | 在使用记录变量时,必须先创建记录变量的类型。语法如下: |
1 | 每个变量的定义后面是逗号,最后一个变量定义后面没有逗号。记录变量,在使用时和普通变量类似。例如,定义一个记录变量: |
1 | 如果使用记录变量中的字段,只需要用“记录变量名,字段名”来实现。 |
使用%ROWTYPE参照某表的记录类型
1 | 也可以让记录变量的类型参照某表中一条记录,方法如下 |
使用表变量
1 | 定义一个变量,像数组一样,包含多个类型相同的简单变量。表变量可以完成这个功能。表变量也属于复合变量。 |
用PL/SQL实现判断逻辑
1 | PL/SQL程序块中的判断逻辑可以通过下面的结构控制语句来实现: |
用IF 语句实现判断逻辑
1 | IF 条件 THEN |
1 | 语法中的判断条件可以是1个条件或者是多个条件的组合,多个条件可以通过连接操作符(AND/OR/NOT)连接。 |
1 | 对于空值的判断,使用ISNULL或者ISNOTNULL操作符。 |
用CASE 语句实现判断逻辑
1 | CASE语句也是一种常见的条件判断语句。其基本语法为: |
1 | CASE的功能也可以用DECODE实现 |
1 | 实际上,CASE的功能比DECODE强大一些,因为CASE还有另一种语法形式: |
用PL/SQL 实现循环逻辑
1 | PL/SQL程序块中的循环逻辑可以通过下面的结构控制语句来实现: |
用LOOP 语句实现循环逻辑
1 | 最简单的循环逻辑是LOOP循环。LOOP循环使程序不经过判断就进入循环,在循环体中判断条件是否满足,一旦满足条件,立刻退出循环。基本语法格式如下: |
1 | 如果没有EXIT语句,将会无限循环下去。 |
用 WHILE 语句实现循环逻辑
1 | WHILE基本语法格式如下: |
用FOR语句实现循环逻辑
1 | FOR循环也是经常使用的一种循环语句,使用FOR循环,循环将会执行指定的次数。下面是FOR循环的语法结构: |
1 | REVERSE是反转的意思,正常的循环计数器从小到大递增,使用REVERSE,将使计数器从大到小递减。 |


























