存储过程
类似于.ne编程中的方法,函数.和C#里的方法一样,由存储过程名/存储过程参数组成/可以有返回结果.
前面学习的If else/while 变量 /insert /select等,都可以在存储过程中使用.
优点
- 执行速度更快,在数据库中保存的存储过程都是已经完成编译的.
- 允许模块化程序设计–类似方法的复用
- 提高系统的安全性,防止sql注入.
减少网络流通量-只要传输存储过程的名称.
存储过程分类
系统存储过程:由系统定义,存放在master数据库中.名称以sp_开头或者xp_开头,
自定义存储过程:由用户在自己的数据库中创建的存储过程,名称以usp_开头
执行存储过程的方法
自定义的存储过程使用exec关键字,后面接上存储过程名称及参数.系统的存储过程可以不使用exec.
定义存储过程
create proc usp_存储过程名称
@num1 int,
@num2 int,//注意这里面是形参,是不需要declare的
as
begin
正式的语句
end
存储过程传递参数的以一种方式
declare @n1 int=10,@n2 int =12
exec usp_名称 @num1=@n1,@num2=@n2 //一般系统的写法
第二种方式
exec usp_名称 10,20 //直接传值,但是需要所有参数需要保持一致.
存储过程提分的案例
create proc usp_tf
@ds int output
as begin
declare @zcount int=(select count(*) from table),
declare @jgcount int=(select count(*) from table where score<60),
while(jgcount<=zcount/2)
begin
update tab set score=score+2 where score<60
set@jicount=(select count(*) from table where score<60)
end