CREATE PROC CD_Update
   @CDID int
AS
   Select ID From CDList Where CDID = @CDID
   下面要循环更新符合条件的所有记录,该怎么写?
GO

解决方案 »

  1.   

    CREATE PROC CD_Update
       @CDID int
    AS
     declare @id int 
     DECLARE Cur_test CURSOR FOR 
     Select ID From CDList Where CDID = @CDID
        OPEN Cur_test
        FETCH NEXT FROM Cur_test INTO @id
     while @@fetch_status = 0
    begin
    ............    FETCH NEXT FROM Cur_test INTO @idend
     
    GO
      

  2.   

    Select ID From CDList Where CDID = @CDID
    沒有紀錄,就不走下面的循環了,不會報錯的
      

  3.   

    当没有记录的时候执行报错:
    [Microsoft][ODBC SQL Server Driver][SQL Server]名为 'Channel_CD' 的游标已存在。
      

  4.   

    由于 @@FETCH_STATUS 对于在一个连接上的所有游标是全局性的,要小心使用 @@FETCH_STATUS 。在执行一条 FETCH 语句后,必须在对另一游标执行另一 FETCH 语句前测试 @@FETCH_STATUS 。在任何提取操作出现在此连接上前,@@FETCH_STATUS 的值没有定义。
      

  5.   

    你這個循環結束以後要
        CLOSE Cur_test
        DEALLOCATE Cur_test 

      

  6.   

    CREATE PROC CD_Update
       @CDID int
    AS
     declare @id int 
     DECLARE Cur_test CURSOR FOR 
     Select ID From CDList Where CDID = @CDID
        OPEN Cur_test
        FETCH NEXT FROM Cur_test INTO @id
     while @@fetch_status = 0
    begin
    ............    FETCH NEXT FROM Cur_test INTO @idend
     CLOSE Cur_test
    DEALLOCATE Cur_test