你用的是什麼書?
真是誤人子弟!!
这样,將if後面的then去掉:begin tran 
update sales
set  qty=qty+100 
where stor_id=6380if @@error !=0 
  begin
    print "sales表产生了错误"
    return
  end update stores
set qty=qty-100
where stor_id=6380if @@error != 0 or @@rowcount = 0 
  begin
  rollback tran
  print "stores表产生了错误"
  return
  end

解决方案 »

  1.   

    在存储过程中,if不需要then,将then去掉就行了
      

  2.   

    先要感谢各位高手的指点,我用的是铁道出版社的《SQL SERVER7 从入门到精通》
    因为我们地处较偏,还特意从长沙买的,没想到会有这样的错误,但也不好再去另买一本了,
    只好将就一下吧。最近我又碰到两个问题:
    1、书上讲DATENAME(YEAR, '1996/09/24/')应返回1996,但我
    照抄后运行时却出现以下信息:
    Server: Msg 170, Level 15, State 1, Line 1
    Line 1: Incorrect syntax near 'YEAR'.
    这不会又是书上印错了吧?2、另外我运行语句"select convert(char(6),getdate(),12)"时,结果为
    ------ 
    010926
    而运行语句"select convert(char(6),getdate(),11)"时,结果却为
    ------ 
    01/09/
    到底语句中的12与11分别代表什么意思?如得到这两个问题的解答,我将马上结帐!多谢!!!
      

  3.   

    第一个:去掉最后免得斜杠,
    select DATENAME(YEAR, '1996/09/24')
    第二个:因为多了两个斜杠(/),总共占六位,所以后面的北截掉了
    可以这样.
    select convert(char(8),getdate(),11)
      

  4.   

    to smartdonkey: 到底语句中的12与11分别代表什么意思?谢谢!
      

  5.   

    自己看吧:Without 
    century 
    (yy) With 
    century 
    (yyyy) Standard Input/Output**
    - 0 or 100 (*)  Default mon dd yyyy hh:miAM (or PM)
    1 101 USA mm/dd/yy
    2 102 ANSI yy.mm.dd
    3 103 British/French dd/mm/yy
    4 104 German dd.mm.yy
    5 105 Italian dd-mm-yy
    6 106 - dd mon yy
    7 107 - mon dd, yy
    8 108 - hh:mm:ss
    - 9 or 109 (*)  Default + milliseconds mon dd yyyy hh:mi:ss:mmmAM (or PM)
    10 110 USA mm-dd-yy
    11 111 JAPAN yy/mm/dd
    12 112 ISO yymmdd
    - 13 or 113 (*)  Europe default + milliseconds dd mon yyyy hh:mm:ss:mmm(24h)
    14 114 - hh:mi:ss:mmm(24h)
    - 20 or 120 (*)  ODBC canonical yyyy-mm-dd hh:mi:ss(24h)
    - 21 or 121 (*)  ODBC canonical (with milliseconds) yyyy-mm-dd hh:mi:ss.mmm(24h)
      

  6.   

    你所说的11,12 是convert函数的style参数,说明如下:
    日期格式样式,借以将 datetime 或 smalldatetime 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型);或者字符串格式样式,借以将 float、real、money 或 smallmoney 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型)。
    SQL Server 支持使用科威特算法的阿拉伯样式中的数据格式。
    在表中,左侧的两列表示将 datetime 或 smalldatetime 转换为字符数据的 style 值。给 style 值加 100,可获得包括世纪数位的四位年份 (yyyy)。
    不带世纪数位(yy)      带世纪数位(yyyy)     标准       输入/输出** 
        -                   0 或 100 (*)       默认 
        1                     101              美国       mm/dd/yyyy 
        2                     102              ANSI       yy.mm.dd 
        3                     103            英国/法国    dd/mm/yy 
        4                     104              德国       dd.mm.yy 
        5                     105              意大利     dd-mm-yy  
        6                     106               -         dd mon yy 
        7                     107               -         mon dd, yy 
        8                     108               -         hh:mm:ss 
        9                   或 109(*)      默认值 + 毫秒  mon dd yyyy
                                                          hh:mi:ss:mmmAM(或 PM) 
       10                    110               美国       mm-dd-yy 
       11                    111               日本       yy/mm/dd 
       12                    112               ISO        yymmdd 
       13                   或 113 (*)  欧洲默认值 + 毫秒 dd mon yyyy hh:mm:ss:mmm
                                                          (24h) 
       14                    114                 -        hh:mi:ss:mmm(24h) 
       20                  或 120 (*)  ODBC 规范          yyyy-mm-dd hh:mm:ss[.fff] 
       21                  或 121 (*)  ODBC 规范(带毫秒)yyyy-mm-dd hh:mm:ss[.fff] 
       126                  (***)                             (不含空格) 
       130*                 科威特                        dd mon yyyy
                                                          hh:mi:ss:mmmAM 
       131*                科威特                         dd/mm/yy hh:mi:ss:mmmAM