什么是存储过程呢?官方是这样定义的,存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
1、创建存储过程语句如下:
createprocedure 存储过程名
@[参数名] [类型],@[参数名][类型]
as
begin
自定义的功能
end
2、调用存储过程
exec sp_name [参数名]
3、删除存储过程
drop proceduresp_name
其实,说白了,存储过程就是一类特殊的函数,只要我们给它合适的参数就可以直接调用,跟调用API函数差不多,唯一不同的就是API函数大部分是别人写的,而存储过程我们一般都是自己写。
注意:不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程。
那么什么是触发器呢?严格意思上说,触发器就是存储过程,只不过它的执行不是由程序调用,也不是手工启动,而是由事件来触发。
创建语句如下:
CREATE TRIGGER`<databaseName>`.`<triggerName>`
< [ BEFORE |AFTER ] > < [ INSERT | UPDATE | DELETE ] >
ON <tableName>
FOR EACH ROW
BEGIN
--do something
END |
这时有人不解了,什么叫由事件来触发呢?其实这和botton按钮的点击事件一样,只不过触发器是由Insert、Update、Delete这些动作触发,而botton的点击事件是通过点击的动作来触发的。
那么存储过程有哪些优点呢?
1、速度快。
在运行存储过程前,数据库已对其进行了语法和句法分析,并给出了优化执行方案。也就是说,存储过程在调用前就已经编译好了,所以存储过程能以极快的速度执行。
2、存储过程可以重复使用,可减少数据库开发人员的工作量 。
3. 保证数据的安全性。
通过存储过程可以使没有权限的用户在控制之下间接地存取数据库,从而保证数据的安全。
4、保证数据的完整性。
通过存储过程可以使相关的动作在一起发生,从而可以维护数据库的完整性。
既然存储过程有如此多的好处,那么我们做项目的时候是不是用的越多越好呢?答案肯定是NO。万事都有个度,存储过程也一样。如果在一个程序系统中大量的使用存储过程,那么必然会导致它的数据结构相当复杂,这样维护该系统将会是相当困难的一件事。
让我们合理使用触发器和存储过程,尽情享受他们带给我们的方便。