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'