网站大量收购独家精品文档,联系QQ:2885784924

[工学]《移动通信数据库Oracle开发》第7章.ppt

[工学]《移动通信数据库Oracle开发》第7章.ppt

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]《移动通信数据库Oracle开发》第7章

知识回顾 本章目标 创建函数 函数举例 函数调用 函数调用举例 函数 函数 函数 函数 函数 存储过程语法 创建存储过程 创建存储过程 调用存储过程 存储过程相关数据字典 创建包 创建包体 删除过程、函数和包 触发器 触发器 DML触发器 在DML语句进行触发 ,可以对每个行或语句操作上进行触发。 替代触发器 是ORACLE 8专门为进行视图操作的一种处理方法。 系统触发器 可以在ORACLE数据库系统的事件中进行触发,如ORACLE系统的启动与关闭等。 触发器 触发器组成: 触发事件: 即在何种情况下触发TRIGGER; 例如:INSERT, UPDATE,DELETE。 触发时间: 即该TRIGGER是在触发事件发生之前(BEFORE)还是之后 (AFTER)触发,也就是触发事件和该TRIGGER 的操作顺序。 触发器本身: 即该TRIGGER 被触发之后的目的和意图,正是触发器 本身要做的事情。 例如:PL/SQL 块。 触发频率: 说明触发器内定义的动作被执行的次数。即语句级 (STATEMENT)触发器和行级(ROW)触发器。 语句级触发器:是指当某触发事件发生时,该触发器只执行一次; 行级触发器: 是指当某触发事件发生时,对受到该操作影响的 每一行数据,触发器都单独执行一次。 触发器 触发器 触发器触发次序 执行 BEFORE语句级触发器; 对与受语句影响的每一行: 执行 BEFORE行级触发器 执行 DML语句 执行 AFTER行级触发器 执行 AFTER语句级触发器 触发器的限制 触发器的限制 CREATE TRIGGER语句文本的字符长度不能超过32KB; 触发器体内的SELECT 语句只能为SELECT … INTO …结构,或者为定义游标所 使用的SELECT 语句; 触发器中不能使用数据库事务控制语句COMMIT、ROLLBACK、SAVEPOINT语句; 由触发器所调用的过程或函数也不能使用数据库事务控制语句; 触发器中不能使用LONG、LONG RAW类型; 触发器内可以参照LOB 类型列的列值,但不能通过 :NEW 修改LOB列中的数据; 触发器所访问的表受到表的约束限制,即后面的“变化表”。 触发器 问题:当触发器被触发时,要使用被插入、更新或删除的记录中的列值,有时要使用操作前、后列的值 :new 修饰符访问操作完成后列的值 :old 修饰符访问操作完成前列的值 触发器 触发器 IC-MSP2.0 IC-MSP2.0 * 移动通信数据库Oracle开发 7 PL/SQL程序设计 第 章 编写自定义函数 编写存储过程 将存储过程等对象打包 编写触发器 语法如下: CREATE [OR REPLACE] FUNCTION function_name [(argment [ { IN| IN OUT }] type, argment [ { IN | OUT | IN OUT } ] type] RETURN return_type { IS | AS } 类型.变量的说明 BEGIN FUNCTION_body EXCEPTION 其他语句 END; 例1.获取某部门的工资总和 CREATE OR REPLACE FUNCTION get_salary( Dept_no NUMBER, Emp_count OUT NUMBER) RETURN NUMBER IS V_sum NUMBER; BEGIN SELECT SUM(SALARY), count(*) INTO V_sum, emp_count FROM EMPLOYEES WHERE DEPARTMENT_ID=dept_no; RETURN v_sum; EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE(你需要的数据不存在!); WHEN TOO_MANY_ROWS THEN DBMS_OUTPUT.PUT_LINE(程序运行错误!请使用游标); WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE(发生其他错误!); END get_salary; 内嵌函数的调用 函数声明时所定义的参数称为形式参数,应用程序调用时为函数传递的参数称为实际参数。 第一种参数传递格式称为位置表示法,格式为: argument_value1[,argument_value2 …] 例2.计算某部门的工资总和。 DECLARE V_num NUMBER; V_

文档评论(0)

ipbohn97 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档