一个存贮过程如果原来分数是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 行: '=' 附近有语法错误。
大侠有空的指点一下!!!

解决方案 »

  1.   

    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 
      

  2.   

    个存贮过程如果原来分数是0,就更新并返回标志为一,否则不更新返回标志为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 
      

  3.   

    服务器: 消息 170,级别 15,状态 1,过程 writescore,行 9 
    第 9 行: ' ' 附近有语法错误。 
    这个错误也很明显 你在第九行 出现半角空格 你仔细查查
      

  4.   

    首先谢谢你,你把return 改为set 我执行下,还不行,
    报错:
    服务器: 消息 170,级别 15,状态 1,过程 writescore,行 9
    第 9 行: ' ' 附近有语法错误。
    服务器: 消息 156,级别 15,状态 1,过程 writescore,行 11
    在关键字 'end' 附近有语法错误。
      

  5.   

    SQL codecreate procedure writescore 
    @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,
      

  6.   

    SQL codecreate procedure writescore 
    @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是不是唯一的。
      

  7.   

    不好意思,  IF(@testscore=0) 
    改为   IF(@testscore>0) 
      

  8.   

    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 --前面有全角空格
    go 
      

  9.   

    感谢feixianxxx,按照你的方法搞定了, 同时也感谢其他同志,同时问一下feixianxxx怎么才能避免上面的问题,