--累加1到100
DECLEARE @sum SMALLINT, @i SMALLINT
SET @i=1
SET @sum =0
BEG:
  IF  ( @i<=100)
    BEGIN
      SET @sum=@sum+@i
      SET @i=@i+1
      GOTO BEG
    END
PRINT @sum      /*消息
消息 137,级别 15,状态 2,第 1 行
必须声明标量变量 "@sum"。
消息 137,级别 15,状态 1,第 2 行
必须声明标量变量 "@i"。
消息 137,级别 15,状态 1,第 3 行
必须声明标量变量 "@sum"。
消息 137,级别 15,状态 2,第 5 行
必须声明标量变量 "@i"。
消息 137,级别 15,状态 2,第 7 行
必须声明标量变量 "@sum"。
消息 137,级别 15,状态 2,第 8 行
必须声明标量变量 "@i"。
消息 137,级别 15,状态 2,第 11 行
必须声明标量变量 "@sum"。

解决方案 »

  1.   

    定义变量的关键字不是DECLEARE,应该是declare 
      

  2.   

    两处修改,一处是DECLARE关键字,一处是逗号改为英文状态下的declare  @sum SMALLINT, @i SMALLINT
    SET @i=1
    SET @sum =0
    BEG:
      IF ( @i<=100)
      BEGIN
      SET @sum=@sum+@i
      SET @i=@i+1
      GOTO BEG
      END
    PRINT @sum   
      

  3.   

    你的代码也可以改为WHILE的:declare  @sum SMALLINT, @i SMALLINT
    SET @i=1
    SET @sum =0
    WHILE ( @i<=100)
      BEGIN
      SET @sum=@sum+@i
      SET @i=@i+1
      END
    PRINT @sum   
      

  4.   

    还是Tony哥厉害,一眼就看出来了
      

  5.   

    DECLARE @sum SMALLINT,@i SMALLINT
    SET @i=1
    SET @sum =0
    BEG:
      IF ( @i<=100)
      BEGIN
      SET @sum=@sum+@i
      SET @i=@i+1
      GOTO BEG
      END
    PRINT @sum 
    DECLARE 还有逗号是英文状态下的。
      

  6.   

    SQL2008可以这么写:DECLARE @sum SMALLINT=0,@i SMALLINT=1
    WHILE ( @i<=100)
    BEGIN
      SET @sum=@sum+@i
      SET @i=@i+1  
    END
    PRINT @sum
      

  7.   

    DECLARE 
    @sum SMALLINT=0
    ,@ibegin SMALLINT=1
    ,@ibend SMALLINT=100set @sum=(@ibegin+@ibend)*(@ibend-@ibegin+1)/2
    PRINT @sum
      

  8.   

    up...........
    推荐使用while
    程序更清晰明了
      

  9.   

    大写DECLARE 在2005下是可以的
      

  10.   

    declare  @sum SMALLINT, @i SMALLINT
    SET @i=1
    SET @sum =0
    --BEG:
      while ( @i<=100)
      BEGIN
      SET @sum=@sum+@i
      SET @i=@i+1
      --GOTO BEG
      END
    PRINT @sum  
      

  11.   


    SQL 是区分大小写的么?