我在一个存储过程中运用了游标来做调用,但是可能是编写的问题,我调用的表里agent_code最多只有4000条,可是运行时却一直不停,像一个死循环,请大家尽快帮我修改一下,谢谢create procedure agent_efyc116
as
declare @agent_code varchar(10)
declare @ybjj decimal(17,2)
set @ybjj = dbo.agent_efyc111(@agent_code)
declare cur_agent2_list cursor for
select agent_code
        from dbo.ag1tab where status = 'A'         open cur_agent2_list         fetch next from cur_agent2_list         into @agent_code         while @@fetch_status = 0begin
           
        insert into dbo.lsb (agent_coed, ybjj)
values(@agent_code, @ybjj)
endclose cur_agent2_list 
       
deallocate cur_agent2_list
  exec agent_efyc116

解决方案 »

  1.   

    begin
               
            insert into dbo.lsb (agent_coed, ybjj)
    values(@agent_code, @ybjj)fetch next from cur_agent2_list into @agent_code   --加上end
      

  2.   

    CREATE PROCEDURE DBO.AGENT_EFYC116
    AS
    SET NOCOUNT ON
    DECLARE @AGENT_CODE VARCHAR(10)
    DECLARE @YBJJ DECIMAL(17,2)
    SET @YBJJ = DBO.AGENT_EFYC111(@AGENT_CODE)
    DECLARE CUR_AGENT2_LIST CURSOR LOCAL STATIC FORWARD_ONLY READ_ONLY
    SELECT AGENT_CODE
            FROM DBO.AG1TAB WITH(NOLOCK)
     WHERE STATUS = 'A'
    OPEN CUR_AGENT2_LIST
    FETCH NEXT FROM CUR_AGENT2_LIST INTO @AGENT_CODE
    WHILE @@FETCH_STATUS = 0
    BEGIN
        INSERT INTO DBO.LSB (AGENT_COED, YBJJ)
    VALUES(@AGENT_CODE, @YBJJ)
    FETCH NEXT FROM CUR_AGENT2_LIST INTO @AGENT_CODE
    END
    CLOSE CUR_AGENT2_LIST 
    DEALLOCATE CUR_AGENT2_LIST