存储过程(Stored Procedure),是由一系列SQL语句构成完成一定的功能的程序方法,通过流程控制和SQL语句组成。
存储过程是数据库中的一个重要对象,在数据量特别庞大的情况下利用存储过程提高效率,一次编译后永久有效
创建存储过程前确定要实现什么功能,存储过程的调用可以是无参的也可以是有参的,可以有返回值也可以没有
create procedure 查询全部签到记录
as
begin
select * from T_QianDaoLog
end
执行完成之后可以在 数据库-可编程性-存储过程 中找到
create proc 根据UserId和Month查询
@UserId int,
@Month int
as
begin
select * from T_QianDaoLog where UserId=@UserId and QianDaoMonth=@Month
end
调用无参存储过程
execute 查询全部签到记录 //可以将execute简化为exec
调用有参存储过程
exec 根据UserId和Month查询 1,5
调用有参数的存储过程,可以同时写出参数名称赋值
exec 根据UserId和Month查询 @UserId=1,@Month=5
此类写法必须要与存储过程中的参数名称保持一致,否则会报错
执行以后效果为下面这种
alter proc 你想修改的某个已存在的存储过程的名称
... //如果有参数可以增加参数
as begin
... //这里写具体的sql语句
end
执行之后你所修改的的存储过程内容就会变更
drop proc 你想删除的某个已存在的存储过程的名称
执行之后,你所选择的这个存储过程就被删掉了
触发器是用来保重数据完整性的一种方法,通俗点来说就是一种比较特殊的存储过程,不能主动调用,在对表进行操作会触发这个过程
1.DDL触发器(数据定义语言)
DDL触发器是指当服务器或者数据库中发生数据定义(create,drop,alter开头的语句)事件激活时,针对数据库的更新变化
2.DML触发器(数据操作语言)
DML触发器是指当数据表中发生数据操作(insert,delete,update)事件时执行的操作
工作原理:
create trigger 触发器名
on 表名
[with encryption]
for | after | instead of [delete,insert,update]
as
sql语句
禁用和启用
alter table 数据表名 disable[禁用],enable[启用] trigger 触发器名
修改
create trigger 触发器名
on 表名
[with encryption]
for | after | instead of [delete,insert,update]
as
sql语句
drop trigger [if exists] 触发器名(同时删除多个触发器需要用,隔开)
在编写存储过程方法时,不能其中删除另一个存储过程,只能调用另一个存储过程
调用存储过程的声明词(create proc,alter proc…)在SQLServer中不区分大小写,但调用存储过程时,存储过程名称需要严格保持一致