- 1、本文档共67页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据库应用技术第蔚腻章 面向过程的SQL扩展
数据库应用技术第五章 面向过程的SQL扩展;内容概要;5.1 服务器端程序;5.1 服务器端程序;5.2 PL/SQL的基本语法;PL/SQL的基本规则;PL/SQL的基本结构-块结构;变量的定义与使用;变量的定义与使用;变量的定义与使用;变量的定义与使用;变量的定义与使用;变量的定义与使用;内嵌SQL;内嵌SQL;5.3 控制流语句;控制流语句-条件;控制流语句-循环;控制流语句-循环;控制流语句-其他;5.4 过程与函数;过程与函数-维护;过程与函数-维护;创建过程;CREATE FUNCTION f_1
(v_cid IN CHAR, v_date IN DATE) RETURN NUMBER
AS
DECLARE
v_sum NUMBER;
BEGIN
SELECT SUM(dollars) INTO v_sum
FROM orders
WHERE cid = v_cid AND
buy_date BETWEEN v_date - 365 AND v_date;
RETURN v_sum;
END;;复杂过程举例;内部子过程
在过程或函数的DECLARE部分定义,只供该过程或函数调用
不能被外部使用
声明时不使用关键字CREATE
放在DECLARE中的最后部分
先声明后使用,可前向声明。
不单独存放在数据库中;内部过程举例;SQL*PLUS 中,使用EXECUTE命令。
在其他PL/SQL程序中,直接写出过程及参数
CREATE PROCEDURE p_2
AS
BEGIN
DECLARE
v1 NUMBER(10);
BEGIN
p_1(‘C001’, v1, SYSDATE); //全局过程p_1
END;
END;;位置表示
credit_acct (acct, amt);
名称表示
credit_acct(amount = amt, acct_no = acct);
credit_acct(acct_no = acct, amount = amt);
混和表示
credit_acct(acct, amount = amt);
如果默认值在前,后面有非默认值,必须使用名称调用方式。;;包(Package);5.5 游标;游标的作用;使用游标;游标声明;DECLARE
CURSOR c1
IS SELECT sid, sname, salary
FROM salers
WHERE salary 2000;
CURSOR c2
RETURN salers%ROWTYPE
IS SELECT *
FROM salers
WHERE salary 2000;
CURSOR c3 (v_salary)
IS SELECT sid, sname, salary
FROM salers
WHERE salary v_salary;
;使用游标;使用游标;举例:计算方差;游标FOR循环;举例:计算方差;游标属性;修改游标中数据;5.6 错误与异常处理;错误与异常;两种处理机制;两种处理机制;错误与异常处理;错误分类和定义;一些预定义错误;用户自定义错误;异常处理语法结构;异常处理过程;异常处理举例;异常处理举例;5.7 触发器;触发器是一种特殊的存储过程。它不是由用户显式调用的,而是当满足某个触发事件时自动执行的。
触发器包括:触发事件,触发器约束和触发器动作。
触发事件:DML语句,DDL语句,数据库系统事件和用户事件。
触发约束:在何种条件下触发。
动作:一个PL/SQL程序。;触发器的用途
高级的存取限制(如在特定时间修改)
复杂的数据一致性检查
自动产生关联的数据
自动建立事件日志
限制
为全局性的操作定义触发器
尽量使用完整性约束
尽量不使用多重触发器、不要产生递归
不要过长(60行);CREATE [OR REPLACE] TRIGGER 触发器名
BEFORE|AFTER|INSTEAD OF
DELETE|INSERT| |UPDATE [OF 列名]
ON 表名 | 视图名
[REFERENCING OLD AS 旧名 | NEW AS 新名]
[FOR EACH ROW|STATEMENT]
[WHEN (条件表达式)]
PL/SQL语句块;;触发器;BEFORE和AFTER。BEFORE用于可能修改语句带来的数值的情况。
条件谓词:INSERTING,
文档评论(0)