Добрый день, все, я потратил около 6 часов, пытаясь заставить форматирование работать через SSIS, используя переменную Max Date для определения в предложении where - Просто не повезло!
Я создал переменную с именемmy_date, которая выбрала значение Max (Date) из таблицы локального сервера SQL, чтобы понять последнюю точку загрузки для этой таблицы, используя следующий код:
SELECT CAST(FORMAT(MAX(Business_Date), 'dd-MMM-yyyy') AS varchar) AS my_date FROM Table
. Правильно выбирается дата 17-Sep-2018.
Затем я сопоставил свой результирующий набор как my_date -> User :: max_date
Я установил для моей переменной max_date строковый тип данных в области действия пакета.
IЯ проверил мою переменную, используя точки останова, чтобы убедиться, что она проходит в правильном формате - и это работает на 100%.
Затем у меня запускается задача потока данных, чтобы извлечь данные из моей базы данных ORACLE и вставитьв мою таблицу SQL Server, которая содержит следующую команду SQL:
SELECT *
FROM Table2
WHERE (BUSINESS_DATE > to_date('@[User::max_date]', 'DD-MON-YYYY'))
Однако я получаю ошибку ORA-01858 - [TABLE]: код ошибки SSIS DTS_E_OLEDBERROR.Произошла ошибка OLE DB.Код ошибки: 0x80040E07.Доступна запись OLE DB.Источник: «Поставщик Microsoft OLE DB для Oracle». Hresult: 0x80040E07 Описание: «ORA-01858: был обнаружен нецифровый символ там, где ожидалось число».
Если я пойду и заменю свою переменную непосредственно насодержимое переменной, отображаемой точкой останова в локалях, работает отлично!
Я попытался использовать несколько типов форматов от первоначального экспорта до конечного предложения where, и это, похоже, самое близкое к нему толкание.но он все еще жалуется на формат.
Пожалуйста, помогите - изображения ниже, чтобы помочь увидеть настройки.
Поток управления - отображение выполнения SQL и задачи потока данных
Язык, показывающий, что переменная вставляется после достижения точки останова