错了,应该是:select top @topNum * from Exam where dwbh=@dwbh order by newID()执行时说@topNum附近有错误。

解决方案 »

  1.   

    select top 10 */coluname from tablename order by coluname 没有错
    好像top后面不能加参数吧,一加就出错,我刚试的
      

  2.   

    top 后面是不能跟动态参数的,可以使用这种变通手法
    SET ROWCOUNT @topNum
    select * from Exam where dwbh=@dwbh order by newID()
    SET RWOCOUNT 0
      

  3.   

    exec('select top '+@topNum+' * from Exam where dwbh='''+@dwbh+''' order by newID()')
      

  4.   

    使用动态SQL语句比较合适~~~本帖的标准答案已由 jieyh(无影无形) 提供~~~
    特别提示:两星人物 mmkk() 的答案是错误的:
    select * from Exam where dwbh=@dwbh order by newID()
    我倒~~猩猩也写出这样的SQL语句,,真是晕死了~~~~~误导~~~~~
    -----------------------------------------------
    建议把分全给 jieyh(无影无形)。
      

  5.   

    看不惯楼上说的~~
    还有mmkk兄的方法也是对的.
      

  6.   

    呵呵.用在存储过程里,应该用mmkk的更理想。如果你用 sql text,其实动态拼装更好。建议用 mmkk的!
      

  7.   

    学到一招,不过还是觉得sql语句拼接较简单一些
      

  8.   

    用在存储过程里,应该用mmkk。
      

  9.   

    say sorry~~~由于受了几次星星的当才对猩猩有点意见~~~~
    -------------------------------------------
    use pubs
    go
    declare @dwBH  tinyint
    declare @topNum int
    set @topNum=3
    set @dwBH=75
    SET ROWCOUNT @topNum
    select * from dbo.jobs where min_lvl=@dwbh order by newID()
    SET ROWCOUNT 0测试如下:job_id job_desc                                           min_lvl max_lvl 
    ------ -------------------------------------------------- ------- ------- 
    9      Acquisitions Manager                               75      175
    10     Productions Manager                                75      165
    11     Operations Manager                                 75      150(所影响的行数为 3 行)==========================================
    mmkk() 是对的。
    偶是菜鸟,喜欢乱说话,,,学艺不精~~~
      

  10.   

    说mmkk不对,是因为
    偶认为
    select * from dbo.jobs where min_lvl=@dwbh order by newID()min_lvl后面不能有动态参数~~~~昏竟然有这样的低级错误,记忆中字段名,表名,数据库名之类作为变量时,必须用动态SQL。
    但是在这里,@dwbh只是一个条件参数~~通宵了好几个晚上,,头疼,呀快考试了~~~~脾气有一点
      

  11.   

    youngby(诗人:(!@杰拉,偶爱福州妹susy香)
    有错就改,好同志
      

  12.   

    :),晚上熬夜了,东西还没好,急死了。那个Sql语句我是写程序执行的,不能用存储过程。
      

  13.   

    sql语句拼接较简单一些用  ieyh(无影无形) 的吧
      

  14.   

    明白了,谢谢。不过我的SQL语句是放在文本文件里的(XML文件里),执行时要从这个文里找这个SQL语句,所以还是有些困难。