--判断存储过程是否存在,存在则删除
if exists(select * from sysobjects where [name]='usp_upGrade')
drop proc usp_upGrade
go
存储过程
-> 不带任何参数的存储过程 create proc 存储过程名 as begin SQL语句 end -> 一般系统定义的存储过程是sp_或xp_开头,用户自己定义的存储过程一般使用usp_开头 -> 代参数的存储过程 create proc 存储过程名 @变量名 类型名 as begin SQL语句 end -> 实现存储过程分页 -> 带有默认值的存储过程 create proc 存储过程名 @变量名 类型名 = 值 as begin SQL语句 end -> 在存储过程中还有一类参数,叫out参数 create proc 存储过程名 @参数名 类型名 out as begin SQL语句 必须为output参数赋值 end -> 在执行完存储过程以后,可以得到这个参数的值 -> 调用的时候 exec 存储过程名 @参数 output分页的例子
1 --定义存储过程 2 create proc usp_FenYe 3 @count int = 30,--参数 4 @page int = 1--参数 5 as 6 begin 7 select * 8 from 9 (10 select ROW_NUMBER() over(order by stuId) as num,11 *12 from Student13 ) as tbl14 where15 num between @count * (@page - 1) + 1 and @count * @page;16 end17 go
嵌套事务的例子
1 --转账的例子 2 create proc usp_Zhuan 3 @from nvarchar(4), 4 @to nvarchar(4), 5 @balance money, 6 @res int output 7 as 8 begin 9 begin transaction10 declare @myError int;11 set @myError = 0;12 begin try13 update bank set balance=balance - @balance where cid=@from;14 update bank set balance=balance + @balance where cid=@to;15 commit;16 set @res = 1; --表示成功17 end try18 begin catch19 rollback;20 set @res = 0; --表示失败21 end catch22 end;23 go