Увеличьте переменную в цикле Foreach и используйте ее - SSIS - PullRequest
3 голосов
/ 10 февраля 2012

У меня есть пакет, в котором я использую цикл foreach для обхода баз данных.Я передаю строку, и она проходит через все базы данных.Здесь все идеально.

Чего я хочу добиться, так это того, что для каждой базы данных она зацикливается, она должна увеличивать переменную на 1. Предположим, если мне нужно пройти через 5 баз данных.И переменная уровня пакета (myvariable = 24) объявляется как 24. Для каждой зацикливаемой базы данных она должна увеличивать переменную на 1.

Для этого я создал задачу сценария внутри контейнера foreachloop.Считайте переменные записи как myvariable.В редакторе сценариев.У меня есть следующий код

public void Main()
        {
     int varbl = Convert.ToInt32(Dts.Variables["User::myvariable"].Value.ToString());
     varbl++
       }

и затем я передаю это увеличенное значение хранимой процедуре.Но это не увеличение.Он по-прежнему принимает значение по умолчанию 24. Любые идеи, как я могу увеличить переменную в контейнере foreachloop?

1 Ответ

9 голосов
/ 10 февраля 2012

Переменная varbl, которую вы создали, существует только в контексте скрипта.

Для увеличения переменной SSIS вам нужно сделать что-то вроде

public void Main()
{
    int varbl = Convert.ToInt32(Dts.Variables["User::myvariable"].Value.ToString());
    varbl++;
    Dts.Variables["User::myvariable"].Value = varbl;
}

или переменную User::myvariableне изменится

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...