存储过程,函数和触发器

存储过程

是一组为完成特点功能的SQL语句集,经编译后存储在数据库中。
  • ### 特点:
1. 创建时编译,在执行的时候不再进行编译;一般SQL语句是每执行一次编译一次。因此存储过程可提高数据库的执行速度。
2. 当对数据库进行复杂操作时(如对多个表进行Update、Insert、Query、Delete时),可将此复杂操作用存储过程封装起来。
3. 简化一系列复杂语句,可以调用另一个存储过程或者函数。
4. 安全性能高,可以设定权限。
5. 参数有三种(IN、OUT、IN OUT),可返回多个参数值。
6. 在ORACLE 中,若干个有联系的过程可以组合在一起构成程序包。
  • ### 语法:
create procedure <过程名>(<参数列表,无参时忽略>)
as|is
变量声明、初始化
begin
业务处理、逻辑代码
exception
异常捕获、容错处理
end <过程名>;
参数:<参数名> in|out|in out <参数类型,无长度说明> ,如:v_name varchar2
in:入参
out:出参
in out:出入参
注:as|is表示asis
  • ### 调用:
1.exec <过程名>;
2.execute <过程名>;
3.对于Oracle数据库,可在PL/SQL语句块中直接调用。(Oracle)

函数

数据库中的函数包括内置函数和自定义函数,内置函数是诸如SUM(),COUNT(),AVG()等数据库内置的函数。一般我们编写的函数都属于自定义函数。
  • ### 特点:
1. 函数只有一种参数(IN),只有一条RETURN语句,只能返回单一的值。
2. 可在SQL语句(DML或SELECT)中调用函数。由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。
  • ### 语法:
create function <函数名>(<参数列表,无参时忽略>)
return <返回值类型,无长度说明>
as|is
变量声明、初始化
begin
业务处理、逻辑代码
return <返回的值>;
exception
异常捕获、容错处理
end <函数名>;
参数:in 入参
注:只有入参的类型。
  • ### 调用:
1. 在SQL语句(DML或SELECT)中调用函数
2. 对于Oracle数据库,可在PL/SQL语句块中直接调用。(Oracle)

触发器

其实是一种特殊的存储过程。一般的存储过程是通过存储名调用,而触发器主要是通过事件(增删改)来触发执行的。

特点

1. 不接收参数
2. 一个表最多可以有12个触发器。但是同一时间,同一事件,同一类型的触发器只能有一个。并且各个触发器不能有矛盾。
3. 在一个表上的触发器越多,DML操作性能影响越大。
4. 触发器最大的容量为32k
5. 触发器不能包含事务控制语句(COMMIT,ROLLBACK,SAVEPOINT)
6. for each row 行触发器
7. :NOW 修饰符访问操作完成后的值。
8. :OLD 修饰符访问操作完成前的值。

语法:

create or replace trigger <触发器名>
after|before  insert|update|delate  on 某表(触发事件表)
 for each row(语句触发器 无此句)
  declare
    声明变量
  begin
    业务,逻辑代码
  exception
    捕获异常,容错处理
end <触发器名>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值