T-SQL loop over query results

前端 未结 6 1644
别跟我提以往
别跟我提以往 2020-11-27 10:40

I run a query select @id=table.id from table and I need to loop over the results so I can exec a store procedure for each row exec stored_proc @varName=@i

6条回答
  •  無奈伤痛
    2020-11-27 11:29

    My prefer solution is Microsoft KB 111401 http://support.microsoft.com/kb/111401.

    The link refers to 3 examples:

    This article describes various methods that you can use to simulate a cursor-like FETCH-NEXT logic in a stored procedure, trigger, or Transact-SQL batch.

    /*********** example 1 ***********/ 
    
    declare @au_id char( 11 )
    
    set rowcount 0
    select * into #mytemp from authors
    
    set rowcount 1
    
    select @au_id = au_id from #mytemp
    
    while @@rowcount <> 0
    begin
        set rowcount 0
        select * from #mytemp where au_id = @au_id
        delete #mytemp where au_id = @au_id
    
        set rowcount 1
        select @au_id = au_id from #mytemp
    end
    set rowcount 0
    
    
    
    /********** example 2 **********/ 
    
    declare @au_id char( 11 )
    
    select @au_id = min( au_id ) from authors
    
    while @au_id is not null
    begin
        select * from authors where au_id = @au_id
        select @au_id = min( au_id ) from authors where au_id > @au_id
    end
    
    
    
    /********** example 3 **********/ 
    
    set rowcount 0
    select NULL mykey, * into #mytemp from authors
    
    set rowcount 1
    update #mytemp set mykey = 1
    
    while @@rowcount > 0
    begin
        set rowcount 0
        select * from #mytemp where mykey = 1
        delete #mytemp where mykey = 1
        set rowcount 1
        update #mytemp set mykey = 1
    end
    set rowcount 0
    

提交回复
热议问题