在SQL Server中,可以定义子程序存放在数据库中,这样子程序称为存储过程
SQL Server中支持以下几种类型的存储过程
1,系统存储过程(以“sp_”为前缀,存储在master里面)
2,本地存储过程(存储在用户自定义的数据库中)
3,扩展存储过程(以“xp_”为前缀,存储在master里面)
4,临时存储过程(以#开头)
注:用户定义的存储过程不能以sp/xp开头
创建存储过程
create procedure 存储过程名 as SQL语句
执行存储过程
Exec(execute) 存储过程名
修改存储过程
alter proc 存储过程名 as SQL语句
删除存储过程
drop procedure 存储过程名
查看存储过程
sp_helptext 查看存储过程的定义
sp_help 查看储存过程有关信息
sp_depends 查看存储过程所依据的对象
sp_rename 存储过程原名,存储过程新名
存储过程中参数的使用
存储过程可以带一个或多个输入参数
create procedure 存储过程名
(@ 参数名 数据类型[=默认值])
as SQL语句
执行带参数的存储过程
①使用参数名传递数值
execute 存储过程名 [@参数名=参数值]
exec p_a @sname=‘aaa‘,@pwd=‘123‘
②按参数位置传递参数
execute 存储过程名 参数值1,参数值2
exec p_a ‘aaa‘,‘123‘
加密存储过程
create procedure p_mi (参数组) with encryption----加密 as SQL语句
带输出参数的存储过程-----从存储过程中返回一个或多个值
create procedure 存储过程名 @参数名 数据类型 output as SQL语句
变量
T-SQL中变量分为局部变量和全局变量
声明局部变量 declare 以@开头的变量名 类型(长度)
局部变量赋值 set 局部变量名=值
注:局部变量和赋值必须分开
全局变量 以@@开头是SQL系统内部事先定义好的变量
运算符:
算数运算符:+,-,*,/,%
赋值:=
比较:>,<.....
逻辑运算符:
all,and,any,some,betwwen,exists,in,like,not,or
流程控制
begin...end:定义语句块,相当于一对括号
Break:退出最内层的while循环
continue:重新开始while循环
goto:无条件跳转语句
if...else:满足条件执行if否则执行else
return:无条件退出
waitfor:为语句的执行设置延迟
while:条件为真时执行语句
return:
declare @i int
set @i=0
while @i<10
begin
set @[email protected]+1
if @1%3=0
return -----终止整个批处理
print @i --最终会输入3
end
使用return返回状态值
存储过程中 return于output区别
共同点:都返回值 (return只能返回int类型)
不同点:
output是定义变量是不是可以返回值