目录
八、属性类型
1、用于引用数据库列的数据类型,以及表示表中一行的记录类型
2、属性类型有两种:
(1)%TYPE - 引用变量和数据库列的数据类型
(2)%ROWTYPE - 提供表示表中一行的记录类型
3、使用属性类型的优点:
(1)不需要知道被引用的表列的具体类型
(2)如果被引用对象的数据类型发生改变,PL/SQL 变量的数据类型也随之改变,健壮性
九、oracle11g的PL/SQL对序列的改进
1、在PL/SQL中取出序列的nextval、currval时,可以不使用
2、select语句,可以类似:
declare aa int; begin aa := seq1.nextval; dbms_output.put_line('aa的值是:' || aa ); end;
3、案例:
(1)在sql语句中,序列这样操作:
SQL>create sequence seq1 start with 1 increment by 1; SQL>select seq1.nextval from dual;
(2)在pl/sql中,可以如下操作:
SQL>create sequence seq1 start with 1 increment by 1;
SQL> set serverout on declare aa int; begin aa := seq1.nextval; dbms_output.put_line('aa value is:' || aa ); end;
(3)SQL>/ 这种操作方式,是上次完整的sql语句重新执行
(4)
十、逻辑比较
1、逻辑比较用于比较变量和常量的值,这些表达式称为布尔表达式
2、布尔表达式由关系运算符与变量或常量组成
3、布尔表达式的结果为TRUE、FALSE或NULL,通常由逻辑运算符AND、OR和NOT连接
4、布尔表达式有三种类型:
(1)数字布尔型
(2)字符布尔型
(3)日期布尔型
十一、控制结构
1、PL/SQL 支持的流程控制结构:
(1)条件控制
a、IF 语句 IF语句根据条件执行一系列语句,有三种形式:IF-THEN、IF-THEN-ELSE 和 IF-THEN-ELSIF b、CASE 语句:
CASE 语句用于根据单个变量或表达式与多个值进行比较
执行CASE 语句前,先计算选择器的值
(2)循环控制
a、LOOP 循环——无条件循环
LOOP sequence_of_statements END LOOP;
b、WHILE 循环——根据条件循环
WHILE condition LOOP sequence_of_statements END LOOP;
c、FOR 循环——循环固定的次数
FOR counter IN [REVERSE] value1..value2 LOOP sequence_of_statements END LOOP;
提前结束循环
(3)continue的使用
oracle11g新增了continue语句,可在循环中使用。该语句可将逻辑直接跳到循环结尾,不执行continue之后的循环内的语句,然后再移到循环开头。
(4)顺序控制
a、GOTO 语句
b、NULL 语句
十二、动态SQL
1、动态 SQL 是指在PL/SQL程序执行时生成的 SQL 语句
2、编译程序对动态 SQL 不做处理,而是在程序运行时动态构造语句、对语句进行语法分析并执行
3、DDL 语句命令和会话控制语句不能在 PL/SQL 中直接使用,但是可以通过动态 SQL 来执行
4、执行动态 SQL 的语法:
EXECUTE IMMEDIATE dynamic_sql_string
[INTO define_variable_list]
[USING bind_argument_list];
十三、错误处理
1、在运行程序时出现的错误叫做异常
2、发生异常后,语句将停止执行,控制权转移到 PL/SQL 块的异常处理部分
3、异常有两种类型:
预定义异常 - 当 PL/SQL 程序违反 Oracle 规则或超越系统限制时隐式引发
用户定义异常 - 用户可以在 PL/SQL 块的声明部分定义异常,自定义的异常通过 RAISE 语句显式引发
十四、引发应用程序错误
1、RAISE_APPLICATION_ERROR 过程
(1)用于创建用户定义的错误信息
(2)可以在可执行部分和异常处理部分使用
(3)错误编号必须介于 –20000 和 –20999 之间
(4)错误消息的长度可长达 2048 个字节
2、引发应用程序错误的语法:
RAISE_APPLICATION_ERROR(error_number, error_message);
文章评论