120-第四讲 PLSQL应用.ppt

  1. 1、本文档共47页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四讲 PL/SQL应用 本章学习目标  本章将讲述PL/SQL的过程、函数、触发器及包的概念,以及如何设计和调试应用。 4.1 过程 4.2 函数 4.3 包 4.4 PL/SQL程序的开发与调试 4.5 触发器 4.1 过程 4.1.1 过程的创建 4.1.2 过程的调用 4.1.3 过程的释放 4.1.1 过程的创建 CREATE 表示在数据库中生成独立的存储过程; CREATE OR REPLACE表示修改数据库中已有的存储过程。 局部声明不需用DECLARE 传参方式 (1)In 表示输入给过程的参数。 (2)Out 表示参数在过程中将被赋值,可以传给过程体的外部。 (3)in out 表示该类参数既可以向过程体传值,也可以在过程体中赋值,以便向过程体外传值。 实例 CREATE PROCEDURE raise_salary (emp_id INTEGER, amount REAL) IS current_salary REAL; salary_missing EXCEPTION; BEGIN SELECT sal INTO current_salary FROM emp WHERE empno = emp_id; IF current_salary IS NULL THEN RAISE salary_missing; ELSE UPDATE emp SET sal=sal+amount WHERE empno= emp_id; END IF; EXCEPTION WHEN NO_DATA_FOUND THEN INSERT INTO emp_audit VALUES(emp_id, ‘No such employee’); WHEN salary_missing THEN INSERT INTO emp_audit VALUES(emp_id, ‘salary is null’); END raise_salary 4.1.2 过程的调用 用EXECUTE命令  SQL> EXECUTE proc_name(par1,par2…); 在PL/SQL程序块内部调用   DECLARE par1,par2;   BEGIN     proc_name(par1,par2…); END; 在调用前要声明变量par1,par2  4.1.3 过程的释放 当某个存储过程不再需要时,应将其从内存中删除,以释放它占用的内存资源。释放过程的语句格式如下: SQL>DROP PROCEDURE proc_name; 4.2 函数 4.2.1 函数的创建 4.2.2 函数的调用 4.2.3 函数的释放 4.2.1 函数的创建 4.2.2 函数的调用 4.2.3 函数的释放 当函数不再使用时,要用DROP命令将其从内存中删除,例如: SQL>DROP FUNCTION Hire_Day ; 4.3 包 4.3.1 包的定义和生成 4.3.2 包的访问 4.3.3 为什么使用包? 4.3.1 包的定义和生成 包是一种模式对象,它将PL/SQL的类型、函数、子程序等逻辑上组织在一起。 一个包中可能包含如下的元素: 过程(procedure) 函数(Function) 变量(Variable) 游标(Cursor) 常量(Constant) 意外情况(Exception) 包由说明部分和包体两部分组成。 在包的说明部分说明的元素(过程、函数等)是公共元素。 只在包体中说明的元素是私有元素 包的说明 注意: 在包的声明部分,游标由以下方式声明 CURSOR cursor_name [(parameter[,parameter]…)] RETURN return_type 声明部分的定义仅对应用的数据库模式有效,在应用范围内可见;对包而言是全局定义,可在包的任意部分使用。 包体 CREATE [OR REPLACE] PACKAGE BODY<包名> IS|AS 游标、函数、过程的具体定义; END<包名>; 实例 CREATE PACKAGE emp_action AS /* Declare externally visible types, cursor, exception.*/ TYPE EmpRecTyp IS RECORD (emp_

文档评论(0)

小玉儿 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档