本帖最后由 wuxiaol2 于 2011-02-26 01:05:35 编辑

解决方案 »

  1.   

    问题是 v_pro_price.Prog_ID 有没有 > 32387 的数据
      

  2.   


    看看SELECT * v_pro_price where Prog_ID>32387
      

  3.   

    --你的SQL,看不出有什么问题
    SELECT  
    a.* ,
    c.Price ,
    b.LevelName
    FROM v_proginfo a
    LEFT JOIN LevelInfo b 
    ON a.ProgLevel = b.Level_ID
    INNER JOIN v_pro_price c 
    ON a.Prog_ID = c.Prog_ID
    WHERE a.Prog_ID = 32387/*
    跟32387没关系吧. ^_^
    smallint   -2^15 (-32,768) 到 2^15-1 (32,767)
    int        -2^31 (-2,147,483,648) 到 2^31-1 (2,147,483,647)
    */
    SELECT *
    FROM v_proginfo a, v_pro_price c
    WHERE a.Prog_ID = b.Prog_ID
    AND a.Prog_ID > 32387
    --有就有,没有就没有
      

  4.   

    有问题的, ASP提示 cint  溢出
      

  5.   


    看看这个!应该不是SQL问题,如果是就是你的字段设置问题。1。
    SQL中的Int数据类型的存储空间是4个字节(32位)。从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据。
    SQL中的SamllInt数据类型的存储空间是2个字节(16位)。从 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的整型数据。
    在远古的数据库中有个小BUG,ProgInfo和Prog_Server的Prog_ID是Int,而GamePrice中的Prog_ID是SamllInt,这里需要把GamePrice中的Prog_ID改成Int。
    2。
    在ASP语言中CInt()是16位的,CLog()才是32位的。所以ASP在处理大于32,767的Prog_ID时会报溢出。这不是SQL的错,是ASP的错,把对应的Cint()改成CLng()就可以了,或者干脆不要这个CInt()。