plsql用户完全手册
第一章 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; 第二种,利用数据库中查询的结果为变量赋值:
SELECT?sal?*?0.10??INTO?bonus??FROM?emp?WHERE?empno?=?emp_id; 第三种,把变量作为一个OUT或IN OUT模式的参数传递给子程序,然后由子程序为其赋值。如下例所示,IN OUT参数可以为被调用的子程序传递初始值然后子程序将更新后的新值返回给调用程序:
DECLARE??my_sal?REAL(7,2);??
原创力文档

文档评论(0)