当前位置: 代码迷 >> Sql Server >> SQL语句执行成功 改为存储过程 传参就报错 求大神帮助
  详细解决方案

SQL语句执行成功 改为存储过程 传参就报错 求大神帮助

热度:48   发布时间:2016-04-24 09:36:54.0
SQL语句执行成功 改成存储过程 传参就报错 求大神帮助
select GName,Bname,IDCode,Sname,sum(Score) as Amount from(
select GName,BName,StudentScore_ex_1_1.IDCode,SName,TopicID,Score 
from studentscore_ex_1_1,Grade,BClass,Student 
where studentscore_ex_1_1.IDCode=Student.IDCode 
and Student.Bcl_PKID=BClass.PKID
and Student.Gra_PKID=Grade.PKID)t group by IDCode,GName,Bname,IDCode,Sname


这个是SQL语句可以正常执行  里面的StudentScore_ex_1_1是表名,是一个动态表名 
我改成存储过程 想动态给他传参  就报错  代码如下
create proc proc_GetStudentScore
@studentscore varchar(50)
as
DECLARE @strsql varchar(200)
set @strsql='select GName,Bname,IDCode,Sname,sum(Score) as Amount from(
select GName,BName,StudentScore_ex_1_1.IDCode,SName,TopicID,Score 
from studentscore_ex_1_1,Grade,BClass,Student 
where studentscore_ex_1_1.IDCode=Student.IDCode 
and Student.Bcl_PKID=BClass.PKID
and Student.Gra_PKID=Grade.PKID)t group by IDCode,GName,Bname,IDCode,Sname'
exec (@strsql)


exec proc_GetStudentScore 'StudentScore_ex_1_1'
消息 4145,级别 15,状态 1,第 4 行
在应使用条件的上下文(在 'studentscore_ex_1_' 附近)中指定了非布尔类型的表达式。

 给存储过程传参时  报如上的错误   求指教 
------解决思路----------------------
set @strsql='select GName,Bname,IDCode,Sname,sum(Score) as Amount from(
select GName,BName,'+@studentscore+'.IDCode,SName,TopicID,Score 
from '+@studentscore+',Grade,BClass,Student 
where '+@studentscore+'.IDCode=Student.IDCode 
and Student.Bcl_PKID=BClass.PKID
and Student.Gra_PKID=Grade.PKID)t group by IDCode,GName,Bname,IDCode,Sname'
  相关解决方案