1. 程序包 (类比于java中接口的实现)
使用程序包的好处:
1-1, 更容易的增强和维护代码
1- 2, 最小化代码重新编译的需求
CREATE OR REPLACE PACKAGE JIA IS --程序包 PROCEDURE PLUS(A IN NUMBER, B IN NUMBER); FUNCTION DIVIDE(A IN NUMBER, B IN NUMBER) RETURN NUMBER; END JIA;
CREATE OR REPLACE PACKAGE BODY jia IS --程序体 PROCEDURE PLUS(A IN NUMBER, B IN NUMBER) AS BEGIN P(A + B); END; FUNCTION DIVIDE(A IN NUMBER, B IN NUMBER) RETURN NUMBER AS C NUMBER; BEGIN C := A / B; RETURN C; EXCEPTION WHEN ZERO_DIVIDE THEN P('除数不能为0'); END; END jia;
declare --test-window i NUMBER; begin jia.PLUS(2,3); i:= jia.DIVIDE(5,3) ; p(i); end;
2.触发器
触发器是一种特殊的存储过程
insert delete update
2-1. 语法:
CREATE OR REPLACE TRIGGER 触发器名
AFTER[BEFORE] 执行的操作(用OR运算符可以并联多个操作) ON 表名[OF 列名]
[FOR EACH ROW]--加上这行代码表示语句级, 只要有一行记录受到影响, 就会触动触发器
BEGIN
-- 需要执行的代码
END;
2-2. 触发器的类型:
语句级触发器--不管一条sql语句操作了多少行, 触发器只触发一次
行级触发器--操作的过程影响了多少行, 就触发多少次触发器 [FOR EACH ROW]
伪记录变量:
:OLD
:NEW
3.游标
游标的种类:
3-1. 静态游标
隐式游标
在执行增删改查 select :(查询操作仅在返回单行记录时)的操作的时候,
可以用SQL关键字获取到一个隐式游标
在隐式游标中, 以上四个属性分别代表的意思是:
1, %FOUND-->执行的操作是否成功
2, %NOTFOUND-->与FOUND相反
3, %ROWCOUNT-->执行操作所影响的行数
4, %ISOPEN--判断游标当前的状态
3-2.显式游标
使用时必须明确的声明游标的类型, 以及关联相关的查询语句
显式游标完全由程序员来控制