有表如下(ID是自增):
ID       Mid        Status
1       1000           0
2       1000           0
3       1000           0
根据变量@count = 2,即修改表中的2条结果
得到以下结果
ID       Mid        Status
1        1000          1
2        1000          0
3        1000          1
存储过程该怎么写?提供一个思路,谢谢!

解决方案 »

  1.   

    為什麼@count=2,選擇更新的是id=1&3這2條?
      

  2.   

    是这样的,要写一个存储过程,该存储过程接收的参数是@count,数据库中有ID不同,其他相同的N条记录,通过传进来的@count,修改N条记录中的任意@count条,不知道我说明白了没?
      

  3.   

    不需要存储过程,用下面的SQL 就可以了。UPDATE [表名] SET STATUS = 1
    WHERE ID IN
    (SELECT TOP 2 ID from [表名])
      

  4.   

    SELECT TOP 后不能加变量吧?我传得是变量怎么办啊?
      

  5.   

    EXECUTE 'UPDATE [表名] SET STATUS = 1 WHERE ID IN (SELECT TOP ' + [我是变量] + ' ID from [表名])'
      

  6.   

    按上面写的,SQL报错?还有什么方法吗?
      

  7.   

    你说的是动态型的SQL吧,SELECT TOP这句我在用时是我的一个where条件,这样用不行
      

  8.   

    EXECUTE ('UPDATE [表名] SET STATUS = 1 WHERE ID IN (SELECT TOP ' + [我是变量] + ' ID from [表名])')
    忘了加括号了你是需要在程序里动态调用吗,如果是的话,只要在程序里执行下面的SQL 就可以了呀,不用传参数给MSSQL的。'UPDATE [表名] SET STATUS = 1 WHERE ID IN (SELECT TOP ' + [我是变量] + ' ID from [表名])'
      

  9.   

    CREATE PROCEDURE procBackMid
       (
    @Did INT,
    @Mid INT,
    @Tnum INT
       )
    AS
    BEGIN
    UPDATE OrderList
    SET Ostatus = 4
    WHERE OLid IN(SELECT TOP 3 OLid      --这个3需要换成变量
          FROM OrderList,OrderInfo
          WHERE Mid = @Mid AND
        OrderList.OIid = OrderInfo.OIid AND
        Did = @Did AND
        OrderList.Ostatus = 0
    )
    END
    我写了个存储过程,如上,这里我需要把3换成变量@Tnum,该如何换?谢谢
      

  10.   

    因为根据传递进来的参数,该值是随时可变化的,我不知道怎么写了。动态SQL在这里能进行调用吗?
      

  11.   

    换了个角度,用循环,取TOP 1了,呵呵,结贴了,谢谢你 kafuwei(你给了国家什么)
      

  12.   

    你上面的存储过程没错,把3替换为@num就可以直接运行的。