sql语句go附近出现语法错误

pws019 2014-11-21 04:36:29
直接写上去,提示:消息 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的查询器
...全文
1883 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
pws019 2014-11-23
  • 打赏
  • 举报
回复
引用 7 楼 tangguangqiang 的回复:
代码没问题,把这个贴子里面的代码直接复制一你的SSMS里面看看行不行, 可能是你的输入法全半角问题吧。
虽然没测试,但感觉应该是这个问题吧。。。
习惯性蹭分 2014-11-21
  • 打赏
  • 举报
回复
代码没问题,把这个贴子里面的代码直接复制一你的SSMS里面看看行不行, 可能是你的输入法全半角问题吧。
Neo_whl 2014-11-21
  • 打赏
  • 举报
回复
05,08r2均测试了你的代码没有问题啊 可以在if 前加个go和存储过程后加个go试试
pws019 2014-11-21
  • 打赏
  • 举报
回复
引用 4 楼 fredrickhu 的回复:
我在 SQL SERVER 2012上运行成功 看来不是你这段代码的问题。 有可能你的查询分析器里面有N段代码。
我专门新建查询测试,还是通不过,纠结。
--小F-- 2014-11-21
  • 打赏
  • 举报
回复
我在 SQL SERVER 2012上运行成功 看来不是你这段代码的问题。 有可能你的查询分析器里面有N段代码。
pws019 2014-11-21
  • 打赏
  • 举报
回复
引用 2 楼 ky_min 的回复:
好奇怪的2012,在CREATE前面加个;试下, 实现不行,把前面的那块放到EXEC里, 这边SQL2005是可以的,而且很常见的写法
还是报错,纠结。
还在加载中灬 2014-11-21
  • 打赏
  • 举报
回复
好奇怪的2012,在CREATE前面加个;试下, 实现不行,把前面的那块放到EXEC里, 这边SQL2005是可以的,而且很常见的写法
發糞塗牆 2014-11-21
  • 打赏
  • 举报
回复
我的2014直接执行你最后一个代码,没报错

34,571

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧