一、存储过程
一种为了完成特定功能的一个或一组sql语句集合,经编译后存储在服务器端的数据库中,可以利用存储过程来加速sql语句的执行。
优点:提高应用程序的通用性和可移植性,多次调用,而不必重新编写,维护人员可随时修改;可更有效管理数据的权限;提高执行sql的数据;减轻服务器负担
缺点:占用空间
1、分类
系统存储过程:存在于master数据库中,在创建数据库时,这些过程自动创建,可以直接调用,不用加数据库名。
自定义存储过程:用户为完成特定功能而创建,可传入参数,也可以有返回值(表明是否成功)。
执行:execute/exec 过程名 参数1,参数2···
2、创建存储过程
--创建
CREATE PROCEDURE SearchStuInfo
AS
BEGIN
select * from student
END
GO
--Procedure可简写为proc
--修改
alter PROCEDURE SearchStuInfo
AS
BEGIN
select * from student
select * from score
END
GO
--执行
exec SearchStuInfo
3、带参数的存储过程
create PROCEDURE AddStuInfo
@id int,
@name varchar(16)
AS
BEGIN
declare @date datetime --声明一个变量
set @date='2012-09-01' --赋值
insert student2(s_id,s_name,s_date)
values(@id,@name,@date)
select * from student2
END
GO
exec AddStuInfo 5,'许一'
二、触发器
一种特殊类型的存储过程,不同的是,触发器是通过事件触发的,自动调用执行。
事件:对表的增删改、
分类:
DDL触发器:create、alter、drop
DML触发器:insert、update、delete
after触发器:dml执行后触发
instead of触发器:不执行dml,执行触发器命令