我写了一个存储过程,采用了游标循坏,现在,在查询分析器运行该存储过程,一切都是正常的,没有异常,用了10条测试数据,存储过程会循环10次,但是,如果我用asp调用,本来应该循环10次的,却只循坏3次,程序正常运行结束,没有报任何错误,但是却只循环了3次,有高手知道,这是为什么吗?

解决方案 »

  1.   

    ALTER     PROCEDURE Pro_Product
    @Counter_ID VARCHAR(30)
    AS
    DECLARE @Product_ID VARCHAR(50)
    DECLARE CR CURSOR FOR SELECT Product_ID FROM Product WHERE CounterID = @Counter_ID
    OPEN CR
    FETCH NEXT FROM CR INTO @Product_ID
    WHILE @@FETCH_STATUS = 0 
    BEGIN
    这里是一些增删改查的语句,比较长,省略

    FETCH NEXT FROM CR INTO @BC_ID            
    END
    CLOSE CR
    DEALLOCATE CR
      

  2.   

    ALTER    PROCEDURE Pro_Product 
    @Counter_ID VARCHAR(30) 
    AS DECLARE CR CURSOR FOR SELECT Product_ID FROM Product WHERE CounterID = @Counter_ID 
    OPEN CR
    DECLARE @Product_ID VARCHAR(50) --定义放这来  
    FETCH NEXT FROM CR INTO @Product_ID 
    WHILE @@FETCH_STATUS = 0 
    BEGIN 
    这里是一些增删改查的语句,比较长,省略 FETCH NEXT FROM CR INTO @BC_ID            
    END 
    CLOSE CR 
    DEALLOCATE CR 
      

  3.   

    ALTER    PROCEDURE Pro_Product 
    @Counter_ID VARCHAR(30) 
    AS DECLARE CR CURSOR FOR SELECT Product_ID FROM Product WHERE CounterID = @Counter_ID 
    OPEN CR
    DECLARE @Product_ID VARCHAR(50) --定义放这来  
    FETCH NEXT FROM CR INTO @Product_ID 
    WHILE @@FETCH_STATUS = 0 
    BEGIN 
    这里是一些增删改查的语句,比较长,省略 FETCH NEXT FROM CR INTO @BC_ID            
    END 
    CLOSE CR 
    DEALLOCATE CR 
      

  4.   

    asp调用代码:
    set conn =server.createobject("adodb.connection")
    conn.Open "Driver={sql server};Server=localhost;Database=PRODUCT;uid=SA;pwd=SA"
    strSQL = "EXEC Pro_Product '" & ProductID & "'"
    conn.execute strSQL
      

  5.   

    现在的问题是,查询分析器执行完全正常,结果也正确,但是用ASP调用就有问题
      

  6.   


    神啊!我用ASP调用存储过程的方法都完全一样,就这一个存储过程有问题不好用,不知道这到底是怎么了
      

  7.   

    asp调用代码: 
    set conn =server.createobject("adodb.connection") 
    conn.Open "Driver={sql server};Server=localhost;Database=PRODUCT;uid=SA;pwd=SA" 
    strSQL = "EXEC Pro_Product '" & ProductID & "'" 
    conn.execute strSQL
      

  8.   

    ALTER    PROCEDURE Pro_Product 
    @Counter_ID VARCHAR(30) 
    AS DECLARE CR CURSOR FOR SELECT Product_ID FROM Product WHERE CounterID = @Counter_ID 
    OPEN CR
    DECLARE @Product_ID VARCHAR(50) 
    FETCH NEXT FROM CR INTO @Product_ID 
    WHILE @@FETCH_STATUS = 0 
    BEGIN 
    这里是一些增删改查的语句,比较长,省略 FETCH NEXT FROM CR INTO @Product_ID            
    END 
    CLOSE CR 
    DEALLOCATE CR 
      

  9.   

    DECLARE @Product_ID VARCHAR(50) 这个呀,每次都变你替换,当然只有一个了程序的问题可能大点,
      

  10.   

    用SQL Profile跟踪下你Call SPd的语句到底是什么既然查询分析器里执行是好的,就肯定是程序的问题~
      

  11.   

    去ASP问一下看看,我的意思是你的更改有没有触发其它的触发器!!!!
      

  12.   

    用查询分析器运行,完全正常,但是用ASP调用,就完了,我不知道这是怎么了