存储过程、函数、触发器
数据库随记
一、存储过程
1、存储过程是什么?
它是完成某些特定功能的SQL语句的集合,特点是一次编译永久有效,能够提升效率,减少访问数据库时网络因素对其造成的影响。
(1)某些特定功能是?
包括对单表/多表的增删改查。
(2)存储过程的种类?
无输入和输出的,只是做简单查询的;有输入参数和返回值的;只有输入参数的;有返回值的;不仅有输入参数,且有输出参数和返回值的。
(3)存储过程写法?
对应上面的几种类型
--有输入参数无返回值的
CREATE PROCEDURE sp_getallrows (IN id_p int) BEGIN SELECT * from words WHERE id = id_p; end call sp_getallrows(5);--调用存储过程
--有入参和返回值的
create procedure sp_test2 (
l_date_p IN Number
l_error_code OUT Number
error_msg OUT VARCHAR2
) is
begin
SELECT * from words WHERE l_date = l_date_p;
l_error_code := 0;
......
error_msg := 'xxxx';
end
二、存储函数
1、什么是存储函数?
完成一定计算的SQL语句集合,有返回值
2、存储函数的写法?
create or replace function sp_test(参数)
return is
begin
SQL语句;
end;
--调用方式
select sp_test(入参)
3、存储函数体语句常见的有?
(1)if语句
(2)循环语句
三、触发器
1、什么是触发器?
在一定的触发条件下执行一定的SQL语句,这个条件是自定义的
2、触发器的功能是?
安全性、审计、实现复杂数据完整性、同步实时复制表数据、自动计算数据值
3、触发器的种类有?
(1)insert型
激活的语句包含:insert、load data、replace
(2)update型
激活的语句包含:update
(3)delete型
激活的语句包含:delete、replace
4、写法
create or replace trigger trg_test
before/after
update on 表名
for each row
begin
....触发体SQL语句;
end;
四、游标
1、什么是游标?
游标(cursor)是一个指针,指向结果集中的任意一条/或多条记录,游标中的SQL语句将一段结果集存于内存中,由创建的游标去得到其指向的数据。
2、游标的种类?
(1)静态游标
建立时查询的结果集不随dml语句变化,简之结果集静态
包括显示游标:明确声明游标的
cursor cur_test (参数) is xxxxxplsql;
--打开游标
open cur_test;
--读取数据(和循环语句一起用loop...end loop 使游标往前走不断读取数据)
fetch xxxx into xxxx;
--关闭游标
close cur_test;
显示游标的属性:
->%ISOPEN:游标打开返回true,否则返回false
->%FOUND:数据有效返回true,否则返回false
->%NOTFOUND:与%FOUND相反,读取到数据返回false否则返回true
->%ROWCOUNT:累计到当前为止,使用fetch提取到数据的总数
隐式游标:由Oracle自动管理,可以查看该游标信息,无法修改,目前用处不明
(2)REF游标
不懂
备注:关于游标中使用的循环语句loop使用说明,exit when 是条件
3、写法
cursor cur_name (参数) is
select xxxxxx;

浙公网安备 33010602011771号