- 1、本文档被系统程序自动判定探测到侵权嫌疑,本站暂时做下架处理。
- 2、如果您确认为侵权,可联系本站左侧在线QQ客服请求删除。我们会保证在24小时内做出处理,应急电话:400-050-0827。
- 3、此文档由网友上传,因疑似侵权的原因,本站不提供该文档下载,只提供部分内容试读。如果您是出版社/作者,看到后可认领文档,您也可以联系本站进行批量认领。
查看更多
PL_SQL手册
第一章 PL/SQL 一览
一、理解PL/SQL 的主要特性
了解PL/SQL 最好的方法就是从简单的实例入手。下面的程序是用于处理一个网球拍订单的。首先声明一
个NUMBER 类型的变量来存放现有的球拍数量。然后从数据表inventory 中把球拍的数量检索出来。如
果数量大于零,程序就会更新inventory 表,并向purchase_record 表插入一条购买记录,如果数量不
大于零,程序会向purchase_record 表插入一条脱销(out-of-stock)记录。
DECLARE
qty_on_hand NUMBER(5);
BEGIN
SELECT quantity
INTO qty_on_hand
FROM inventory
WHERE product = TENNIS RACKET
FOR UPDATE OF quantity;
IF qty_on_hand 0 THEN -- check quantity
UPDATE inventory
SET quantity = quantity - 1
WHERE product = TENNIS RACKET;
INSERT INTO purchase_record
VALUES (Tennis racket purchased, SYSDATE);
ELSE
INSERT INTO purchase_record
VALUES (Out of tennis rackets, SYSDATE);
END IF;
COMMIT;
END;
在PL/SQL 中,可以使用SQL 语句来操作Oracle 中的数据,并使用流程控制语句来处理数据。我们还可
以声明常量和变量,定义函数和过程并捕获运行时错误。因此,PL/SQL 是一种把SQL 对数据操作的优势
和过程化语言数据处理优势结合起来的语言。
1、块结构
PL/SQL 是一种块结构的语言,它的基本组成单元是一些逻辑块,而这些块又能嵌套任意数量子块。通常,
每一个逻辑块都承担一部分工作任务, 这种将问题分而治之 的方法称为逐
PL/SQL (divide-and-conquer)
步求精(stepwise refinement)。块能够让我们把逻辑相关的声明和语句组织起来,声明的内容对于块来
说是本地的,在块结构退出时它们会自动销毁。
如下图所示,一个块分为三个部分:声明,处理,异常控制。其中,只有处理部分是必需的。首先程序处
理声明部分,然后被声明的内容就可以在执行部分使用,当异常发生时,就可以在异常控制部分中对抛出
的异常进行捕捉、处理。
我们还可以在处理部分和异常控制部分嵌套子块,但声明部分中不可以嵌套子块。不过我们仍可以在声明
部分定义本地的子程序,但这样的子程序只能由定义它们的块来调用。
2、变量与常量
PL/SQL 允许我们声明常量和变量,但是常量和变量必须是在声明后才可以使用,向前引用(forward
reference)是不允许的。
• 变量声明
变量可以是任何SQL 类型,如CHAR,DATE 或NUMBER 等,也可以是PL/SQL 类型,BOOLEAN 或
BINARY_INTEGER 等。声明方法如下:
part_no NUMBER(4);
in_stock BOOLEAN;
我们还可以用 、 和 这些复合类型来声明嵌套表、变长数组 缩写为 和
TABLE VARRAY RECORD ( varray)
记录。
• 变量赋值
我们可以用三种方式为变量赋值,第一种,直接使用赋值操作符:=:
tax := price * tax_rate;
valid_id := FALSE;
bonus := current_salary * 0.10;
wages := gross_pay(emp_id,
st_hrs,
ot_hrs
) - deductions;
第二种,利
文档评论(0)