1. 程式人生 > >SQLserver 使用遊標雙重迴圈生成新的資料表內容

SQLserver 使用遊標雙重迴圈生成新的資料表內容

begin
    declare @a int,@error int    
    declare @temp varchar(50), @temp2 varchar(50)
    set @a=1
    set @error=0
    
    --建立臨時表
    Create Table Rpt_customerMoney (customerId int, customer varchar(30), supplierId int, supplier varchar(30), receiveSum float) ;
    
    --申明遊標為Uid
    declare order_cursor cursor 
            for (select [id] from customer)
    --開啟遊標--
    open order_cursor
    
    --開始循環遊標變數--
    fetch next from order_cursor into @temp
    while @@FETCH_STATUS = 0    --返回被 FETCH語句執行的最後遊標的狀態--
        begin            
        
            print @temp;
        
            --申明遊標為Uid
            declare order_cursor2 cursor 
                    for (select [id] from supplier where ifOurCompany=1)
            --開啟遊標2--
            open order_cursor2

            fetch next from order_cursor2 into @temp2
            while @@FETCH_STATUS = 0    --返回被 FETCH語句執行的最後遊標的狀態--
                begin
                    insert into Rpt_customerMoney (customerId, supplierId) values (@temp, @temp2);
                    print @temp + ' '+ @temp2
            
                    fetch next from order_cursor2 into @temp2   --轉到下一個遊標,沒有會死迴圈
                            
                end  
                close order_cursor2            --關閉遊標
                deallocate order_cursor2    --釋放遊標

          
            fetch next from order_cursor into @temp   --轉到下一個遊標,沒有會死迴圈
        end
        
    close order_cursor  --關閉遊標
    deallocate order_cursor   --釋放遊標
   
end
go