Как объявить курсор для зацикливания на какой-то бизнес-единице в SQL Server 2008 R2 - PullRequest
0 голосов
/ 13 марта 2012

У меня есть бизнес-подразделение, такое как Индия, Международный, США, Великобритания.Я должен:

  1. Создать переменную таблицы (виртуальная таблица в памяти) со столбцами, которые соответствуют SPROC SP_Report результирующий набор.
  2. Объявить курсор, который содержит все бизнес-единицы, а затемкурсор должен зацикливаться на BU's.
  3. Для каждого BU выполните хранимую процедуру с именем SP_Report и вставьте данные в табличную переменную.
  4. Наконец, мне нужно выбрать столбцы из таблицы variable + timestamp + BU, вставить их в другую таблицу и очистить переменную таблицы.

Что я уже сделал, я уже сделалсделал хранимую процедуру и таблицу variabe:

Код:

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

Этот код дает мне результат табличной переменной.Теперь я должен использовать его в курсоре, что я не знаю, как.Как я могу решить то же самое.

1 Ответ

1 голос
/ 13 марта 2012

Ваш код должен быть похожим на это (извините, я не проверял это):

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;
...