SQL 21日自学通(V3.0)(PDF格式)-第75部分
按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
读完一本书以后要将书合上一样 你应该使用 CLOSE 命令来关闭指针
语法
BEGIN
open employee_cursor;
statement1;
statement2;
。
。 close employee_cursor;
END
分析
当关闭一个指针以后 查询的结果集就不复存在了 如果你想访问结果集中的数据你
必须重新打开指针才行
条件语句
现在我们得到了非常有用的东西来控制我们的 SQL 语句的运行 在 PL/SQL 中的条件
语句与大多数第三代编程语言是类似的
IF THEN
在大多数编程中 IF THEN 语句可能是得常用的语句了 它决定了对于特定的条件
应当执行哪一部分的操作 其结构如下
语法
388
…………………………………………………………Page 389……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
IF condition1 THEN
statement1;
END IF
如果你需要对这两种情况进行分别处理 那么你可以将语句形式写成下边的样子
语法
IF condition1 THEN
statement1
ELSE
statement2
END IF
如果你需要进行判断的条件多于两个 那么语句可以写成下边样子
语法
IF condition1 THEN
statement1
ELSIF condition2 THEN
statement2
ELSE
statement3
END IF
分析
在最后一个例子中 如果满足条件 1 那么就执行语句 1 如果满足条件 2 那么就会
执行语句 2 否则的话就会执行语句 3 条件语句也可以嵌于其他语句和 LOOP 循环中
LOOPS 循环
LOOPS 在 PL/SQL 的语句块中将不断地执行过程直到指定的条件满足为止 一共有三
种循环
LOOP 本身是一个无限的循环 它经常在指针中使用 如果你想终止这种循环 你必
须指定在什么时候退出 例如 在循环中翻阅指针的时候你可以指定当指针处于最后一行
的时候退出循环 见下例
389
…………………………………………………………Page 390……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
输入
BEGIN
open employee_cursor
LOOP
FETCH employee_cursor into employee_record
EXIT WHEN employee_cursor%NOTFOUND
statement1
END LOOP
close employee_cursor
END
%NOTFOUND 是指针的一种属性 它表明在当前指针中没有任何数据 在上一个例
子中如果指针没有发现数据就会退出循环 假如你在循环中忽略了这条语句 循环将会一
直进行下去
WHILE…LOOP 则是在当条定条件满足时执行特定的语句 而当条件不在满足时就会从
循环中退出转而执行下一条语句
输入
DECLARE
cursor payment_cursor is
select cust_id; payment; total_due from payment_table
cust_id payment_table。cust_id%TYPE
payment payment_table。payment%TYPE
total_due payment_table。total_due%TYPE
BEGIN
open payment_cursor
WHILE payment 《 total_due LOOP
FETCH payment_cursor into cust_id; payment; total_due
EXIT WHEN payment_cursor%NOTFOUND
insert into underpay_table
values (cust_id; 'STILL OWES')
390
…………………………………………………………Page 391……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
END LOOP
close payment_cursor
分析
在上一个例子中使用了 WHILE…LOOP 来对指针进行翻阅 并且在当条件
payment start proc1 or
SQL》 sta proc1 or
SQL》 @proc1
注 PL/SQL 脚本语言可以使用 START 命令或@字符来运行 它也可以被其它的 PL/SQL
脚本 SHELL 脚本或其它的程序调用
将输入返回给用户
尤其是在捕获了错误的时候 你可以会希望输出信息给用户告诉他出现了什么错误
你可以转送已有的错误信息 你也可以显示你所定制的错误信息 对于用户来说这会与错
误代码更容易理解 也许你想的是当在错误产生时让他们与数据库管理员联系而不是给他
们尽可以准确的信息
PL/SQL 在它的语法部分中并没有提供直接的方式来显示输出 但是它可以让你来调
用一个对该语句块服务的包 这个包是由 DBMS_OUTPUT 来调用的
EXCEPTION
WHEN zero_divide THEN
DBMS_OUTPUT。put_line('ERROR: DIVISOR IS ZERO。 SEE YOUR DBA。')
分析
ZERO_DIVIDE 是 ORACLE 的一个预定义的异常 有许多在程序运行中产生的常见的
错误都被预定义为异常并且可以被默认地激活 也就是说你不必在编程的过程中手动将其
激活