create proc getJobInfo
@job_id int
as
select * from jobs where job_id=@job_id
go
execute getJobInfo 1
如下包含一个输出参数,注意output的使用,以及在调用存储过程时接收输出参数的方法:
create proc getJobDesc
@job_id int,
@job_desc varchar(2000) output
as
select @job_desc=job_desc from jobs where job_id=@job_id
go
declare @desc varchar(2000)
execute getJobDesc 1,@desc output
print @desc
参数的默认值:
如果存储过程语句具有参数,则必须在调用存储过程时提供这些参数的值,否则SQL SERVER 会报错。但也可以为这些参数设定默认值,这样用户就不一定非要提供这些参数了!
ALTER proc getJobInfo
@job_id int=1
as
select * from jobs where job_id=@job_id
go
execute getJobInfo
execute getJobInfo 2
按名称传参与按位置传参:
按位置传参要求各个参数的顺序必须是一定的,而按名称传参则无此限制
create proc getJob
@min_lvl int,
@max_lvl int
as
begin
select * from jobs where min_lvl>@min_lvl and max_lvl<@max_lvl
end
--按名称传参
execute getJob @max_lvl=800,@min_lvl=10
---按位置传参
execute getJob 10,800 --相当于:execute getJob @min_lvl=10,@max_lvl=800
alter proc getJob
@job_id int,
@desc varchar(2000) output
as
begin
select @desc=job_desc from jobs where job_id=@job_id
return @@error
end
declare @id int,@desc varchar(2000),@result int
-------把存储过程直接赋值给用于接收返回值的变量
execute @result=getJob 1,@desc output
select @result,@desc