存储过程、函数、触发器

1.存储过程和函数的区别

1)存储过程是用户定义的SQL语句序列的集合。函数通常不涉及特定的用户表。

2)一个函数只能返回一个变量;一个存储过程可以返回多个。

3)存储过程的参数可以有IN,OUT,INOUT三种类型,而函数只能有IN类

4)存储过程声明不需要返回类型,函数声明需要描述返回类型,而函数体必须包含有效的RETURN语句。

5)在SQL语句中存储过程不可用,但可以使用函数。

存储过程示例:

mysql> delimiter $$  #将语句的结束符号从分号;临时改为两个$$(可以是自定义)
mysql> CREATE PROCEDURE delete_matches(IN p_playerno INTEGER)
    -> BEGIN
    ->   DELETE FROM MATCHES
    ->    WHERE playerno = p_playerno;
    -> END$$
Query OK, 0 rows affected (0.01 sec)

mysql> delimiter ;  #将语句的结束符号恢复为分号
call delete_matches(57);

函数示例:

mysql> DELIMITER  //
mysql> CREATE  FUNCTION  CountProc2  ( sid  INT  )
    -> RETURNS  INT
    -> BEGIN
    ->  RETURN  (  SELECT  COUNT(*)  FROM  fruits  WHERE  s_id = sid );
    -> END  //
Query OK, 0 rows affected (0.10 sec)
 
mysql> DELIMITER  ;

 


 

存储过程的优点和缺点

优点:
1.执行速度快。存储过程只需要编译一次,以后无需编译就可以执行,所以使用存储过程可提高数据库执行速度

2.减少网络I/O

3.存储过程可以重复使用,可减少开发人员的工作量

4.安全性高,可设定只有某些用户才具有对指定存储过程的使用权
缺点:
1.调试麻烦
2.可移植性差

 

2.触发器

DML触发器:当数据库服务器中发生数据操作语言事件时执行的存储过程,分为:After触发器、Before触发器和instead of触发器
DDL触发器:特殊的触发器,在响应数据定义语言(DDL)语句时触发,一般用于数据库中执行管理任务。DDL触发器是响应create、after、或drop开头的语句而激活

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值