存储过程一般是作为一个独立的部分来执行
函数可以作为查询语句的一个部分来调用;
存储过程:
只在创建时进行编译,以后执行存储过程都不需要再重新编译,而一般SQL语句每执行一次就编译一次,☞所以使用存储过程可以提高数据库执行速
可以在过程中调用另一个存储过程,或者是函数,☞简化复杂语句
当对数据库进行复杂操作时(如对多个表进行增删改),可将此复杂操作用存储过程封装起来
参数有三种(In、Out、In Out),可返回0~多个参数值。
函数
只有一种参数(In,可省),只能用return返回单一值
可在 DML或Select 中调用函数。由于函数可以返回一个表象,因此它可以在查询语句中位于From关键字的后面。
触发器
数据库的一些事件如新增修改删除,可以触发的一些操作(本质上是存储过程,存储过程需要程序调用,而触发器会自动执行)
触发器不接受参数,一个表上最多可有12个触发器,但同一时间、同一事件、同一类型的触发器只能有一个。并各触发器之间不能有矛盾。
在一个表上的触发器越多,对在该表上的DML操作的性能影响就越大。
触发器最大为32KB。(若确实需要,可以先建立过程,然后在触发器中用CALL语句进行调用)
在触发器的执行部分只能用DML语句,不能使用DDL语句
触发器中不能包含事务控制语句TCL (COMMIT,ROLLBACK,SAVEPOINT)。因为触发器是触发语句的一部分