Stored procedures 如何在SQLServer2008R2中声明游标以循环到某个业务单元

Stored procedures 如何在SQLServer2008R2中声明游标以循环到某个业务单元,stored-procedures,cursor,sql-server-2008-r2,Stored Procedures,Cursor,Sql Server 2008 R2,我有一些业务部门,如印度、国际、美国、英国。我必须: 创建一个表变量(虚拟内存表),其中的列与SPROC SP_Reportresultset匹配 声明一个包含所有业务单元的游标,然后该游标应在业务部门的上循环 对于每个BU,执行一个名为SP_Report的存储过程,并将数据插入表变量 最后,我必须从表variable+timestamp+BU中选择列,将它们插入另一个表并清除表变量 到目前为止,我已经制作了一个存储过程和表变量: 代码: declare @K table (BU nvarcha

我有一些业务部门,如印度、国际、美国、英国。我必须:

  • 创建一个表变量(虚拟内存表),其中的列与
    SPROC SP_Report
    resultset匹配
  • 声明一个包含所有业务单元的游标,然后该游标应在
    业务部门的
    上循环
  • 对于每个
    BU
    ,执行一个名为
    SP_Report
    的存储过程,并将数据插入表变量
  • 最后,我必须从表
    variable+timestamp+BU
    中选择列,将它们插入另一个表并清除表变量
  • 到目前为止,我已经制作了一个存储过程和表变量:

    代码:

    declare @K table (BU nvarchar(max), K nvarchar(max),Y money, A money, D money, YP money) 
    declare @FY int 
    declare @BU nvarchar(max)
    
    INSERT INTO @K (BU,K,Y,A,D,YP) EXEC dbo.SP_Report '2012', 'India'
    SELECT * FROM @K
    

    这段代码给出了表变量的结果。现在我必须在游标中使用它,我不知道如何使用它。如何解决这个问题。

    您的代码应该是liske this(抱歉,我没有测试它):

    declare @KT table (BU nvarchar(max), K nvarchar(max),Y money, A money, D money, YP money) ;
    declare @FY int ;
    declare @BU nvarchar(max);
    declare @K nvarchar(max);
    declare @Y money;
    declare @A money;
    declare @D money;
    declare @YP money;
    
    INSERT INTO @KT (BU,K,Y,A,D,YP) EXEC dbo.SP_Report '2012', 'India'
    
    DECLARE BU_cursor CURSOR FOR 
    SELECT BU,K,Y,A,D,YP FROM @KT;
    
    OPEN BU_cursor;
    
    FETCH NEXT FROM BU_Cursor 
    INTO @BU,@K,@Y,@A,@D,@YP;
    
    WHILE @@FETCH_STATUS = 0
    BEGIN
      -- place the cursor logic here
    
      FETCH NEXT FROM BU_Cursor 
      INTO @BU,@K,@Y,@A,@D,@YP ;
    END
    
    CLOSE BU_Cursor;
    DEALLOCATE BU_Cursor;