Я извлекаю данные из таблицы в Oracle.
У меня есть менеджер соединений ODB C с базой данных Oracle, и запрос на извлечение должен включать предложение where
, потому что таблица содержит транзакционные данные, и нет никакой причины извлекать их все время каждый раз.
Я хочу инициализировать таблицу один раз и сделать это с For Loop
, который будет выполнять итерацию всей таблицы.
Поскольку это соединение ODB C, я не могу просто поместить предложение where
, потому что мне нужно использовать переменную, поэтому я понял, что мне нужно параметризовать задачу DataFlow
и написать свой запрос в свойстве sqlcommand
, содержащем источник ODB C. Значение свойства:
SELECT *
FROM DDC.DDC_SALES_TBL
WHERE trunc(CALDAY) between to_date('"+ @[User::vstart]+"','MM/DD/YYYY')
and to_date('"+ @[User::vstop]+"','MM/DD/YYYY')
Где @vstart
и @vstop
- это переменные, содержащие даты 'from / to', которые должны быть извлечены на основе функции DATEADD
и другой переменной (@vcount
), который должен быть итератором следующим образом:
(DT_WSTR, 2) MONTH( DATEADD( "day", @[User::vcount] , GETDATE() ) )+"/"+
(DT_WSTR, 2) DAY( DATEADD( "day", @[User::vcount] , GETDATE() ) )+"/"+
(DT_WSTR, 4) YEAR( DATEADD( "day", @[User::vcount] , GETDATE() ) )
Происходит то, что первая итерация работает нормально, но вторая генерирует ошибку и пакет завершается ошибкой.
Я пометил переменную как EvaluateAsExpression=True
Я также пометил DelayValidation=True
в задачах For L oop и DataFlow.
Ошибки:
( 1) Задача потока данных: ошибка: SQLSTATE: HY010, сообщение: [Microsoft] [ODB C Driver Manager] Ошибка последовательности функций; (2) Задача потока данных: ошибка: код ошибки служб SSIS DTS_E_INDUCEDTRANSFORMFAILUREONERROR. «ODB C Source.Outputs [ODB C Source Output]» не выполнен, поскольку произошел код ошибки 0xC020F450, а расположение строки ошибки в «ODB C Source» указывает на ошибку при ошибке. Произошла ошибка в указанном объекте указанного компонента. Перед этим могут быть сообщения об ошибках с дополнительной информацией о сбое. (3) Задача потока данных: ошибка: код ошибки службы SSIS DTS_E_PRIMEOUTPUTFAILED. Метод PrimeOutput на ODB C Источник возвратил код ошибки 0xC0209029. Компонент возвратил код ошибки, когда механизм конвейера вызвал PrimeOutput (). Значение кода ошибки определяется компонентом, но ошибка является фатальной, и конвейер прекратил выполнение. До этого могут быть сообщения об ошибках с дополнительной информацией о сбое.
Пожалуйста, помогите.