日期:2014-05-16  浏览次数:20533 次

怎么运行成功。没有结果?是哪里出问题了吗?
--创建存储过程avgscore,根据给定的班级名称计算该班级的平均成绩,并将结果使用输
--出参数返回。如果指定的班级名称存在,则返回1,否则返回0
create procedure avgscore
@a char(8),@score float output
as
declare @classid int 
set @classid=0
select @classid=cast(班级号 as int) from 班级 where 班级号=@a
if @classid=0
return 0
else 
begin
select @score=avg(成绩) from 
(select 学号,班级.班级号 from 学生 inner join 班级 on 学生.班级号=班级.班级号) A1 
inner join 选修 on 选修.学号=A1.学号 where 班级号=@a
return 1
end
go
declare @a char(8),@score float,@b int
set @a='080101'
execute @b=avgscore @a,@score
if @b=1
print '班级号为:'+@a+'的班级平均分为'+cast(@score as char(5))
else
print '输入的班级不存在'
------解决方案--------------------
獲取方式不對
兩種改法
將return 改成 select 那樣@score float output沒起作用
另外sp_executesql 獲取@score


------解决方案--------------------
return和print在两个不同的界面显示的