1.传参方式:
1. 无参
功能:查看作业类型表的所有信息
create procedure waw_showTaskType
as
begin
select * from TaskType
end
2. 入参
功能:根据TaskID查看该类型的信息
create procedure waw_showTaskTypeById
(
@taskId int
)
as
begin
select * from TaskType where TaskID=@taskId
end
3. 出参
功能:根据taskId查看该作业类型的名称
create procedure waw_showTaskNameById
(
@taskId int,
@taskName varchar(30) output
)
as
begin
select @taskName=taskname from TaskType where TaskID=@taskId
End
调用存储过程:
declare @taskId int,
@taskName varchar(30)
set @taskId=1
exec waw_showTaskNameById @taskId,@taskName output
print @taskName
注意:output不能省略,否则不能传出
传参时也可以不按照参数顺序,而使用”参数名=参数值”的写法:
exec waw_showTaskNameById @taskId=@taskId,@taskName=@taskName output
注意:一旦有一个参数采用”参数名=参数值”的写法,则所有的参数都要这样写.
2.语法结构:
Create proc|procedure 存储过程名
(
参数1,
参数2,
.......
)
as
begin
变量定义部分
业务逻辑部分
异常处理部分
end
3. 返回值方式
存储过程有三种返回方式:
1. 用return返回数字型数据
2. 用返回参数(output)返回结果,可以返回各种数据类型(通过游标来循环查询结果每一行)
3. 直接在存储过程中用select返回结果集,可以是任意的select语句,这意味着是任意的返回结果集.
3.1用return返回数字型数据
功能:根据作业类型id判断creater是否为’’(空字符串)
create proc waw_isNullOfCreaterOfTaskType
(
@taskId int
)
as
begin
if (select creater from taskType where taskid=@taskId) =''
return 0
else return 1
end
3.2 用返回参数返回结果
功能:根据taskId查看该作业类型的名称
create procedure waw_showTaskNameById
(
@taskId int,
@taskName varchar(30) output
)
as
begin
select @taskName=taskname from TaskType where TaskID=@taskId
End
3.3 直接用select返回结果集
功能:查看作业类型表的所有信息
create procedure waw_showTaskType
as
begin
select * from TaskType
End
4. 调用存储过程
在sql server查询窗口中调用存储过程的语法为:
Exec 存储过程名 参数1,参数2......
在程序中调用查看相关api
5.存储过程中用到的其他功能
5.1 变量定义
格式:Declare @变量名 变量类型 如:
Declare @userId int
5.2变量赋值:
5.2.1简单赋值
Declare @a int
Set @a=5
print @a
5.2.2 用select赋值
declare @user1 nvarchar(50)
select @user1='张三'
print @user1
5.2.3 用update赋值
declare @user3 nvarchar(50)
update ST_User set @user3 = Name where ID=1
print @user3
5.3.打印语句
5.3.1 print
declare @a varchar(20)
set @a='fdsfdsf'
Print @a
5.3.2 select
declare @a varchar(20)
set @a='fdsfdsf'
select @a
5.4 循环语句
While 条件
begin
循环体
end
实例如下:
--while循环计算1到100的和
declare @a int
declare @sum int
set @a=1
set @sum=0
while @a<=100
begin
set @sum+=@a
set @a+=1
end
print @sum
5.5 条件语句
5.5.1 if else条件分支
if(1+1=2)
begin
print '对'
end
else
begin
print '错'
end
5.5.2 when then 条件分支
declare @today int
declare @week nvarchar(3)
set @today=3
set @week=case
when @today=1 then '星期一'
when @today=2 then '星期二'
when @today=3 then '星期三'
when @today=4 then '星期四'
when @today=5 then '星期五'
when @today=6 then '星期六'
when @today=7 then '星期日'
else '值错误'
end
print @week