一个存贮过程如果原来分数是0,就更新并返回标志为一,否则不更新返回标志为0create procedure writescore
@score int,
@code varchar(20),
@flag int outputas
IF((select TestScore from SingleChoiceTest where StudentID=@code)>0)
begin
update SingleChoiceTest set TestScore=@score where StudentID=@code
return @flag = 1
end
ELSE
return @flag = 0可是报有错,错误消息如下:
服务器: 消息 170,级别 15,状态 1,过程 writescore,行 9
第 9 行: ' ' 附近有语法错误。
服务器: 消息 170,级别 15,状态 1,过程 writescore,行 10
第 10 行: '=' 附近有语法错误。
大侠有空的指点一下!!!
@score int,
@code varchar(20),
@flag int outputas
IF((select TestScore from SingleChoiceTest where StudentID=@code)>0)
begin
update SingleChoiceTest set TestScore=@score where StudentID=@code
return @flag = 1
end
ELSE
return @flag = 0可是报有错,错误消息如下:
服务器: 消息 170,级别 15,状态 1,过程 writescore,行 9
第 9 行: ' ' 附近有语法错误。
服务器: 消息 170,级别 15,状态 1,过程 writescore,行 10
第 10 行: '=' 附近有语法错误。
大侠有空的指点一下!!!
@score int,
@code varchar(20),
@flag int output as
IF((select TestScore from SingleChoiceTest where StudentID=@code)>0)
begin
update SingleChoiceTest set TestScore=@score where StudentID=@code
set @flag = 1
end
ELSE
set @flag = 0
那么你的语句是不是要这样改
IF((select TestScore from SingleChoiceTest where StudentID=@code)=0)
create procedure writescore
@score int,
@code varchar(20),
@flag int output as
IF((select TestScore from SingleChoiceTest where StudentID=@code)=0)
begin
update SingleChoiceTest
set TestScore=@score
where StudentID=@code
set @flag = 1
end
ELSE
set @flag = 0
第 9 行: ' ' 附近有语法错误。
这个错误也很明显 你在第九行 出现半角空格 你仔细查查
报错:
服务器: 消息 170,级别 15,状态 1,过程 writescore,行 9
第 9 行: ' ' 附近有语法错误。
服务器: 消息 156,级别 15,状态 1,过程 writescore,行 11
在关键字 'end' 附近有语法错误。
@score int,
@code varchar(20),
@flag int output as
IF(exists(select TestScore from SingleChoiceTest where StudentID=@code))
begin
update SingleChoiceTest set TestScore=@score where StudentID=@code
set @flag = 1
end
ELSE
set @flag = 0
查询的结果是一个集合,只能是记录数是否大于0,不能是查询记录大于0,
@score int,
@code varchar(20),
@flag int output as
declare @testscore float
select @testscore =isnull(TestScore,0) from SingleChoiceTest where studentID=@code
IF(@testscore=0)
begin
update SingleChoiceTest set TestScore=@score where StudentID=@code
set @flag = 1
end
ELSE
set @flag = 0 不知道你这个学生ID是不是唯一的。
改为 IF(@testscore>0)
@score int,
@code varchar(20),
@flag int output as
IF((select TestScore from SingleChoiceTest where StudentID=@code)=0)
begin
update SingleChoiceTest --前面有全角空格
set TestScore=@score --前面有全角空格
where StudentID=@code --前面有全角空格
set @flag = 1
end
ELSE
set @flag = 0 --前面有全角空格
go