预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共16页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第一章PL/SQL一览 一、理解PL/SQL的主要特性 1、块结构 了解PL/SQL最好的方法就是从简单的实例入手。下面的程序是用于处理一个网球拍订单的。首先声明一个NUMBER类型的变量来存放现有的球拍数量。然后从数据表inventory中把球拍的数量检索出来。如果数量大于零,程序就会更新inventory表,并向purchase_record表插入一条购买记录,如果数量不大于零,程序会向purchase_record表插入一条脱销(out-of-stock)记录。DECLARE qty_on_handNUMBER(5); BEGIN SELECTquantity INTOqty_on_hand FROMinventory WHEREproduct='TENNISRACKET' FORUPDATEOFquantity; IFqty_on_hand>0THEN--checkquantity UPDATEinventory SETquantity=quantity-1 WHEREproduct='TENNISRACKET'; INSERTINTOpurchase_record VALUES('Tennisracketpurchased',SYSDATE); ELSE INSERTINTOpurchase_record VALUES('Outoftennisrackets',SYSDATE); ENDIF; COMMIT; END; 在PL/SQL中,可以使用SQL语句来操作Oracle中的数据,并使用流程控制语句来处理数据。我们还可以声明常量和变量,定义函数和过程并捕获运行时错误。因此,PL/SQL是一种把SQL对数据操作的优势和过程化语言数据处理优势结合起来的语言。 PL/SQL是一种块结构的语言,它的基本组成单元是一些逻辑块,而这些块又能嵌套任意数量子块。通常,每一个逻辑块都承担一部分工作任务,PL/SQL这种将问题分而治之(divide-and-conquer)的方法称为逐步求精(stepwiserefinement)。块能够让我们把逻辑相关的声明和语句组织起来,声明的内容对于块来说是本地的,在块结构退出时它们会自动销毁。 如下图所示,一个块分为三个部分:声明,处理,异常控制。其中,只有处理部分是必需的。首先程序处理声明部分,然后被声明的内容就可以在执行部分使用,当异常发生时,就可以在异常控制部分中对抛出的异常进行捕捉、处理。 我们还可以在处理部分和异常控制部分嵌套子块,但声明部分中不可以嵌套子块。不过我们仍可以在声明部分定义本地的子程序,但这样的子程序只能由定义它们的块来调用。 2、变量与常量 PL/SQL允许我们声明常量和变量,但是常量和变量必须是在声明后才可以使用,向前引用(forwardreference)是不允许的。 变量声明 变量可以是任何SQL类型,如CHAR,DATE或NUMBER等,也可以是PL/SQL类型,BOOLEAN或BINARY_INTEGER等。声明方法如下:part_noNUMBER(4); in_stockBOOLEAN; 我们还可以用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; 第二种,利用数据库中查询的结果为变量赋值:SELECTsal*0.10 INTObonus FROMemp WHEREempno=emp_id; 第三种,把变量作为一个OUT或INOUT模式的参数传递给子程序,然后由子程序为其赋值。如下例所示,INOUT参数可以为被调用的子程序传递初始值然后子程序将更新后的新值返回给调用程序: DECLARE my_salREAL(7,2); PROCEDUREadjust_salary(emp_idINT,salaryINOUTREAL)IS... BEGIN SELECTAVG(sal) INTOmy_sal FROMemp; adjust_salary(7788,my_sal);--assignsanewvaluetomy_sal 声明常量 声明常量跟声明变量类似,但是要加一个CONSTANT关键字,并在声明时为其赋上初始值。下例中,我们声明一个名为credit_limit的常量: credit_limitCONSTANTREAL:=5000.00; 3、游标 Oracle使用工作区(worka