直接写上去,提示:消息 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的查询器
------解决思路----------------------

------解决思路----------------------
好奇怪的2012,在CREATE前面加个;试下,
实现不行,把前面的那块放到EXEC里,
这边SQL2005是可以的,而且很常见的写法
------解决思路----------------------
我在 SQL SERVER 2012上运行成功 看来不是你这段代码的问题。
有可能你的查询分析器里面有N段代码。
------解决思路----------------------
05,08r2均测试了你的代码没有问题啊
可以在if 前加个go和存储过程后加个go试试
------解决思路----------------------
代码没问题,把这个贴子里面的代码直接复制一你的SSMS里面看看行不行,
可能是你的输入法全半角问题吧。