'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的查询器
8 个解决方案
#1
我的2014直接执行你最后一个代码,没报错
#2
好奇怪的2012,在CREATE前面加个;试下,
实现不行,把前面的那块放到EXEC里,
这边SQL2005是可以的,而且很常见的写法
实现不行,把前面的那块放到EXEC里,
这边SQL2005是可以的,而且很常见的写法
#3
还是报错,纠结。
#4
我在 SQL SERVER 2012上运行成功 看来不是你这段代码的问题。
有可能你的查询分析器里面有N段代码。
有可能你的查询分析器里面有N段代码。
#5
我专门新建查询测试,还是通不过,纠结。
#6
05,08r2均测试了你的代码没有问题啊
可以在if 前加个go和存储过程后加个go试试
可以在if 前加个go和存储过程后加个go试试
#7
代码没问题,把这个贴子里面的代码直接复制一你的SSMS里面看看行不行,
可能是你的输入法全半角问题吧。
可能是你的输入法全半角问题吧。
#8
虽然没测试,但感觉应该是这个问题吧。。。
#1
我的2014直接执行你最后一个代码,没报错
#2
好奇怪的2012,在CREATE前面加个;试下,
实现不行,把前面的那块放到EXEC里,
这边SQL2005是可以的,而且很常见的写法
实现不行,把前面的那块放到EXEC里,
这边SQL2005是可以的,而且很常见的写法
#3
还是报错,纠结。
#4
我在 SQL SERVER 2012上运行成功 看来不是你这段代码的问题。
有可能你的查询分析器里面有N段代码。
有可能你的查询分析器里面有N段代码。
#5
我专门新建查询测试,还是通不过,纠结。
#6
05,08r2均测试了你的代码没有问题啊
可以在if 前加个go和存储过程后加个go试试
可以在if 前加个go和存储过程后加个go试试
#7
代码没问题,把这个贴子里面的代码直接复制一你的SSMS里面看看行不行,
可能是你的输入法全半角问题吧。
可能是你的输入法全半角问题吧。
#8
虽然没测试,但感觉应该是这个问题吧。。。