下载此文档

【精品】PL、SQL用户指南与参考.doc


文档分类:IT计算机 | 页数:约15页 举报非法文档有奖
1/15
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/15 下载此文档
文档列表 文档介绍
【精品】PL、SQL用户指南与参考.doc第一章PL/SQL 一览
一、理解PL/SQL的主要特性
1、块结构
了解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 RACKET5 ;
INSERT INTO purchase_record
VALUES (' Tennis racket purchased,, SYSDATE);
ELSE
INSERT INTO purchase_record
SYSDATE);
VALUES (' Out of tennis rackets',
END [比
COMMIT;
END;
在PL/SQL中,可以使用SQL语句来操作Oracle中的数据,并使用流程控制语句 来处理数据。我们还可以声明常量和变量,定义函数和过程并捕获运行时错误。 因此,PL/SQL是一种把SQL对数据操作的优势和过程化语言数据处理优势结合 起来的语言。
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;
、变长数组(缩 写为varray)和记录。
变量赋值
我们可以用三种方式为变量赋值,第一种,直接使用赋值操作符〃:二〃: tax :二 price * tax_rate;
valid_id :二 FALSE;
bonus :二 current_salary * 0. 10;
wages :二 gross_pay(emp_id,
st _hrs, ot_hrs
)- deductions;
第二种,利用数据库中查询的结果为变量赋值:SELECT sal * 0. 10
INTO bonus
FROM emp
WHERE empno 二 emp_id;
第三种,把变量作为一个OUT或IN OUT模式的参数传递给子程序,然后由子程 序为其赋值。如下例所示,IN OUT参数可以为被调用的子程序传递初始值然后 子程序将更新后的新值返回给调用程序:
DECLARE
my sal REAL 亿 2);
PROCEDURE adjust salary (emp id INT, salary IN OUT REAL) IS ... BEGIN
SELECT AVG(sal)
INTO mysal
FROM emp;
adjustsalary(7788, mysal);

【精品】PL、SQL用户指南与参考 来自淘豆网m.daumloan.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数15
  • 收藏数0 收藏
  • 顶次数0
  • 上传人小健
  • 文件大小93 KB
  • 时间2021-08-13
最近更新