存储过程、函数、触发器

数据库随记

一、存储过程

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;

posted @ 2021-11-05 10:40  cow09  阅读(133)  评论(0)    收藏  举报