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后 就没有错误 为什么哈 新手请教 只有这么多的分了,麻烦帮一下吧
展开
 我来答
jsczwangx
2013-12-07 · TA获得超过1222个赞
知道小有建树答主
回答量:777
采纳率:100%
帮助的人:628万
展开全部
因为上面代码中下面这个部分有个else,else和if是搭配用的,只有else没有if就会报错的哦
end
else
begin
有问题再追问吧,望采纳。
追问
你好 ,上面的代码只给出了一半 空间 有限 
就是那个else是放在 str语句中的和str中的if 配对
意思是 如果是不存在执行外层的if 如果存在 就进入str 语句 判断数据是否存在
调试的结果如下
空间不够了

消息 156,级别 15,状态 1,第 5 行
关键字 'as' 附近有语法错误。
追答

上说吧

chensy831018
2013-12-07 · TA获得超过103个赞
知道答主
回答量:70
采纳率:0%
帮助的人:96.5万
展开全部
存储过程中段有'else',但前面没有'if',当然会报错。
begin和end都是成对出现的,仔细找找begin对应的end,结构就清楚了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
szm341
2013-12-07 · TA获得超过6726个赞
知道大有可为答主
回答量:5005
采纳率:100%
帮助的人:5160万
展开全部
这样看是看不出来的,你把print的结果拿出来分析一下,哪里拼接错了还是哪里传值不对
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式