编程论坛's Archiver

qixuzhen 发表于 2008-6-14 14:06

求助 关于输出变量

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 需要赋值吗?

zhouwei 发表于 2008-6-14 15:40

ALTER proc你这么写的目的是什么

tomtory 发表于 2008-6-14 17:24

ALTER proc [dbo].[proc_3] @sno varchar(10),@grade int output

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


@grade不需要赋值  因为你是用的select @grade
这已经相当于给它赋值了

bb3852 发表于 2008-6-16 14:05

output表示一个传出参数,和传入参数正好相反,是从存储过程得到值,再将值传递给外面的变量

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

这个时候@getgrade就得到存储过程中@grade的值了

jxyga111 发表于 2008-6-17 11:18

同上

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.