SQL 关键字 'as' 附近有语法错误。
createprocproc_process_view_class@cnochar(7),@coursenochar(8)asbegindeclare@strrvarch...
create proc proc_process_view_class @cno char(7) ,@courseno char(8)
as
begin
declare @strr varchar(max),@str varchar(max)
set @strr='view_class_'+@cno
begin
set @str='if '+@courseno +' in(select distinct '+'课程号'+' from '+'view_course_10100001 )
begin
update '+@strr+'
set '+ @strr+'.成绩=s_c_t2.mark ,'+ @strr+'.班级排名=ROW_NUMBER() over (partition by s_c_t2.cno order by s_c_t2.mark desc) as rownumbers ,
'+@strr+'.课程排名=v1.课程排名
from student s, course c ,S_C_T s_c_t2 ,view_course_'+@courseno+' v1
s.sclassno='+@cno+' and s.sno=s_c_t2.sno and s_c_t2.cno=c.cno and v1.学号=s.sno
end
else
begin
insert into '+@strr+'(学号,姓名,课程号,课程名,成绩,班级排名,课程排名)
select s.sno ,s.sname,c.cno,c.cname,s_c_t2.mark ,
ROW_NUMBER() over (partition by s_c_t2.cno order by s_c_t2.mark desc) as rownumbers ,v1.课程排名
from student s, course c ,S_C_T s_c_t2 ,view_course_'+@courseno+' v1
where s.sclassno='+@cno+' and s.sno=s_c_t2.sno and s_c_t2.cno=c.cno and v1.学号=s.sno
end '
print @str
exec(@str)
end
end
为什么错了 但是 如果在
declare @strr varchar(max),@str varchar(max)
set @strr='view_class_'+@cno
if object_id (@strr, 'U') IS NOT NULL
begin
set @str='if '+@courseno +' in(select distinct '+'课程号'+' from '+'view_course_10100001 )
begin
加上if后 就没有错误 为什么哈 新手请教 只有这么多的分了,麻烦帮一下吧 展开
as
begin
declare @strr varchar(max),@str varchar(max)
set @strr='view_class_'+@cno
begin
set @str='if '+@courseno +' in(select distinct '+'课程号'+' from '+'view_course_10100001 )
begin
update '+@strr+'
set '+ @strr+'.成绩=s_c_t2.mark ,'+ @strr+'.班级排名=ROW_NUMBER() over (partition by s_c_t2.cno order by s_c_t2.mark desc) as rownumbers ,
'+@strr+'.课程排名=v1.课程排名
from student s, course c ,S_C_T s_c_t2 ,view_course_'+@courseno+' v1
s.sclassno='+@cno+' and s.sno=s_c_t2.sno and s_c_t2.cno=c.cno and v1.学号=s.sno
end
else
begin
insert into '+@strr+'(学号,姓名,课程号,课程名,成绩,班级排名,课程排名)
select s.sno ,s.sname,c.cno,c.cname,s_c_t2.mark ,
ROW_NUMBER() over (partition by s_c_t2.cno order by s_c_t2.mark desc) as rownumbers ,v1.课程排名
from student s, course c ,S_C_T s_c_t2 ,view_course_'+@courseno+' v1
where s.sclassno='+@cno+' and s.sno=s_c_t2.sno and s_c_t2.cno=c.cno and v1.学号=s.sno
end '
print @str
exec(@str)
end
end
为什么错了 但是 如果在
declare @strr varchar(max),@str varchar(max)
set @strr='view_class_'+@cno
if object_id (@strr, 'U') IS NOT NULL
begin
set @str='if '+@courseno +' in(select distinct '+'课程号'+' from '+'view_course_10100001 )
begin
加上if后 就没有错误 为什么哈 新手请教 只有这么多的分了,麻烦帮一下吧 展开
3个回答
展开全部
存储过程中段有'else',但前面没有'if',当然会报错。
begin和end都是成对出现的,仔细找找begin对应的end,结构就清楚了。
begin和end都是成对出现的,仔细找找begin对应的end,结构就清楚了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这样看是看不出来的,你把print的结果拿出来分析一下,哪里拼接错了还是哪里传值不对
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询