注册 登录
编程论坛 SQL Server论坛

求助 关于输出变量

qixuzhen 发布于 2008-06-14 14:06, 882 次点击
ALTER proc [dbo].[proc_3] @sno varchar(10),@grade int output
as
select @grade= sum(grade) from sc where sno=@sno
if @grade<9
print'此学生所选总学分为'+CAST( @grade AS NVARCHAR(30))+'学分不足'
else print'此学生所选总学分为'+CAST( @grade AS NVARCHAR(30))+'学分已足'
运行以上代码后,
exec proc_3 '95001'后说缺少变量
如果执行
exec proc_3 '95001',null
或exec proc_3 '95001',‘146843464684’
146843464684可以换成任意的数都能得到相同且正确的结果
这是为什么呢,
@grade 需要赋值吗?
4 回复
#2
zhouwei2008-06-14 15:40
ALTER proc你这么写的目的是什么
#3
tomtory2008-06-14 17:24
ALTER proc [dbo].[proc_3] @sno varchar(10),@grade int output

呵呵  你是设置的连两个参数嘛  在执行它的时候就当然要传两个参数进去嘛


@grade不需要赋值  因为你是用的select @grade
这已经相当于给它赋值了
#4
bb38522008-06-16 14:05
output表示一个传出参数,和传入参数正好相反,是从存储过程得到值,再将值传递给外面的变量

举一个例子
declare @getgrade int
exec proc_3 '95001',@getgrade output

这个时候@getgrade就得到存储过程中@grade的值了
#5
jxyga1112008-06-17 11:18
同上
1