Oracle存储过程
1.执行并打印执行存储过程
F9:测试
Ctrl+N:单步进入
2.创建游标并遍历游标进行查询
3.判断语句
4.循环语句
5.导出json文件
6.导出csv文件
7.存储函数
一般来讲,过程和函数的区别在于函数可以有一个返回值;而过程没有返回值。
但过程和函数都可以通过out指定一个或多个输出参数,我们可以利用out参数,在过程和函数中实现返回多个值。
--查询某个员工的年收入
create or replace function queryempincome(eno in number)
return number
as
--月薪和奖金
psal emp.sal%type;
pcomm emp.comm%type;
begin
select sal,comm into psal,pcomm from emp where empno=eno;
--返回年收入
return psal*12+nvl(pcomm,0);
end;
8.触发器
create trigger trigger_name
trigger_time
trigger_event
on table_name for each row
begin
sql语句
end;
trigger_name:触发器名称
trigger_time:触发时间,可以是before(检查约束前触发)或者after(检查约束后触发)
trigger_event:触发器的触发事件,可以是insert、updata或者delete.对同一个表相同触发时间的相同触发事件,只能定义一个触发器。所以一张表上最多只能定义6个触发器
sql语句:要去处理的一系列操作,可能不止一条SQL语句,不允许select操作执行
指定结束符:通过delimiter来指定结束符,delimiter +任意符号即可
触发器的具体创建如下:
delimiter &&
create trigger tri_1
after
insert
on test for each row
begin
set @count = @count + 1;
end;
&&
使用过程如下:
首先,定义一个变量记录数据中的个数,初始化为10
再将这个变量值修改为2
此时插入一条数据,insert语句会触发触发器执行sql语句,此时查询出来的结果就为3了
删除触发器:
要删除film表上的触发器ins_film:
drop trigger ins_film;
查看触发器:
查询指定触发器的指定信息,查看方式是查询系统表的infromation_schema.tiggers表
select * from triggers where triggers_name = 'ins_film_bef' \G
触发器的限制:
- 存储过程或者函数通过OUT或者INOUT类型的参数将数据返回触发器是可以的,但是不能调用直接返回数据的过程
- 不能在触发器中使用以显式或隐式方式开始或结束事务的语句。如start、trans-action、commit或者rollback