oracle子程序及table类型用法等

oracle子程序及table类型用法等

ID:33586687

大小:362.50 KB

页数:64页

时间:2019-02-27

oracle子程序及table类型用法等_第1页
oracle子程序及table类型用法等_第2页
oracle子程序及table类型用法等_第3页
oracle子程序及table类型用法等_第4页
oracle子程序及table类型用法等_第5页
资源描述:

《oracle子程序及table类型用法等》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第八章PL/SQL子程序一、什么是子程序子程序就是能够接受参数并被其他程序所调用的命名PL/SQL块。PL/SQL子程序有两种类型,过程和函数。一般地,过程用于执行一个操作,而函数用于计算一个结果值。与未命名或匿名PL/SQL块一样,子程序也有声明部分,执行部分和一个可选的异常处理部分。声明部分包含类型、游标、常量、变量、异常和嵌套子程序的声明。这些内容都是本地的,在程序退出时会自动销毁。执行部分包含赋值语句、流程控制语句和Oracle的数据操作语句。异常处理部分包含异常处理程序。思考下面用于记入借方银行账户的debit_account过程:PROCEDURE debit_acco

2、unt(acct_id INTEGER, amount REAL) IS  old_balance   REAL;  new_balance   REAL;  overdrawn     EXCEPTION;BEGIN  SELECT bal    INTO old_balance    FROM accts   WHERE acct_no = acct_id;  new_balance    := old_balance - amount;  IF new_balance < 0 THEN    RAISE overdrawn;  ELSE    UPDATE accts    

3、   SET bal = new_balance     WHERE acct_no = acct_id;  END IF;EXCEPTION  WHEN overdrawn THEN    ...END debit_account;在被调用时,这个过程接受一个银行账号和借贷金额。它使用账号从accts表中查询账目结算信息。然后用借款金额计算新的账目结算。如果计算后的余额比零小,异常就会被抛出;否则,该账号相关信息就会被更新。二、子程序的优点子程序能提供扩展性,它能够让我们根据自己的需求来编写特定的PL/SQL。比如,我们需要一个能够创建新部门的过程,就可以像下面这样编写代码:PR

4、OCEDURE create_dept(new_dname VARCHAR2, new_loc VARCHAR2) ISBEGIN  INSERT INTO dept       VALUES (deptno_seq.NEXTVAL, new_dname, new_loc);END create_dept;子程序还能提供模块化,就是说它可以把一个程序定义成多个模块,更易管理。这样,我们就可以用自顶而下的设计(top-downdesign)和逐步求精(stepwiserefinement)的方法来解决问题。此外,子程序在提高程序的重用性和可维护方面也是很有用的。只要编译成功,子程序就

5、可以放心地用在很多应用程序中。如果它的定义内容发生了改变,受到影响的只有子程序本身而已,这就简化了维护过程。最后,子程序还有助于逻辑的抽象。使用子程序时,我们需要知道的是它们的功能,而不是它们实现功能的细节问题。三、理解PL/SQL过程过程是一个能执行某个特定操作的子程序。我们可以用下面的语法来编写过程:[CREATE [OR REPLACE]]PROCEDURE procedure_name[(parameter[, parameter]...)]  [AUTHID {DEFINER 

6、 CURRENT_USER}] {IS 

7、 AS}  [PRAGMA AUTONOMOUS_T

8、RANSACTION;]  [local declarations]BEGIN  executable statements[EXCEPTION  exception handlers]END [name];parameter的含义如下:parameter_name [IN 

9、 OUT [NOCOPY] 

10、 IN OUT [NOCOPY]] datatype[{:= 

11、 DEFAULT} expression]CREATE子句能让我们创建保存在数据库中的独立过程。我们可以从SQL*Plus中或是在使用动态SQL的程序中执行CREATEPROCEDURE语句。AUTHID子句决定了存

12、储过程是按所有者权限(默认)调用还是按当前用户权限执行,也能决定在没有限定修饰词的情况下,对所引用的对象是按所有者模式进行解析还是按当前用户模式进行解析。我们可以指定CURRENT_USER来覆盖掉程序的默认行为。编译指示AUTONOMOUS_TRANSACTION会告诉PL/SQL编译器把过程标记为自治(独立)。自治事务能让我们把主事务挂起,执行SQL操作,提交或回滚自治事务,然后再恢复主事务。我们不能对参数的数据类型进行约束,如下例中对acct_id的声明就是不合

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。