当前位置: 代码迷 >> Sql Server >> sql语句go附近出现语法异常
  详细解决方案

sql语句go附近出现语法异常

热度:34   发布时间:2016-04-24 09:40:53.0
sql语句go附近出现语法错误
直接写上去,提示:消息 111,级别 15,状态 1,过程 usp_upGrade,第 1 行
'CREATE/ALTER PROCEDURE' 必须是查询批次中的第一个语句。


if exists(select * from sys.objects where name='usp_upGrade')
drop proc usp_upGrade

create procedure usp_upGrade
as
declare @count int,@failcount int
select @count=COUNT(*) from Score
select @failcount=COUNT(*) from Score where english<60
while (@count/2 <@failcount)
begin
update Score set english=english+2 
select @count=count(*) from Score where english<60
end
update Score set english=100 where english>100

然后修改一下,在create前面加上go,提示:消息 102,级别 15,状态 1,第 1 行
“go”附近有语法错误。
消息 111,级别 15,状态 1,第 1 行
'CREATE/ALTER PROCEDURE' 必须是查询批次中的第一个语句。

if exists(select * from sys.objects where name='usp_upGrade')
drop proc usp_upGrade
go
create procedure usp_upGrade
as
declare @count int,@failcount int
select @count=COUNT(*) from Score
select @failcount=COUNT(*) from Score where english<60
while (@count/2 <@failcount)
begin
update Score set english=english+2 
select @count=count(*) from Score where english<60
end
update Score set english=100 where english>100


将两个部分的代码分开运行就可以得到结果,但是连在一起就会报错,再在存储过程结尾加个go,会提示:消息 102,级别 15,状态 1,第 1 行
“go”附近有语法错误。
消息 111,级别 15,状态 1,第 1 行
'CREATE/ALTER PROCEDURE' 必须是查询批次中的第一个语句。
消息 102,级别 15,状态 1,第 1 行
“go”附近有语法错误。


if exists(select * from sys.objects where name='usp_upGrade')
drop proc usp_upGrade
go
create procedure usp_upGrade
as
declare @count int,@failcount int
select @count=COUNT(*) from Score
select @failcount=COUNT(*) from Score where english<60
while (@count/2 <@failcount)
begin
update Score set english=english+2 
select @count=count(*) from Score where english<60
end
update Score set english=100 where english>100
go

这是什么问题呢?求解啊,该怎么才能让他们连在一起运行呢。我用的sql2012的查询器
------解决思路----------------------
我的2014直接执行你最后一个代码,没报错
------解决思路----------------------
好奇怪的2012,在CREATE前面加个;试下,
实现不行,把前面的那块放到EXEC里,
这边SQL2005是可以的,而且很常见的写法
------解决思路----------------------
我在 SQL SERVER 2012上运行成功  看来不是你这段代码的问题。

有可能你的查询分析器里面有N段代码。
------解决思路----------------------
05,08r2均测试了你的代码没有问题啊
可以在if 前加个go和存储过程后加个go试试
------解决思路----------------------
代码没问题,把这个贴子里面的代码直接复制一你的SSMS里面看看行不行,
可能是你的输入法全半角问题吧。
  相关解决方案