Выходные переменные SSIS Execute SQL Task

У меня есть пакет SSIS, который берет данные из таблицы базы данных и выводит их в файлы csv. В какой-то момент по пути возникает задача «Выполнение SQL» для получения имени файла (тип и порядковый номер, которые затем используются для создания имени файла, например, CAR, 12 сделает C0000012.csv. Мне нужно иметь возможность сделать это таким образом, чтобы не возникало ошибок в случае отсутствия машин в таблице при запуске пакета.

Для этого я сделал пакет sql, который проверит количество, а затем либо вернет «CAR» и порядковый номер, если есть данные, либо «NUL» и 0, если их нет. У меня есть две переменные, которые отображаются как выходные параметры:

      NAME                   | Direction| Type   | Name | Size
      User::DownloadFileType | Output   | String | TYPE | 3
      User::DownloadFileNum  | Output   | int32  | SEQN | 8

Когда я запускаю пакет, я продолжаю получать сообщение об ошибке:

Тип значения, присваиваемого переменной "User::DownloadFileType", отличается от текущего типа переменной.

Я искал помощь в Интернете, и, похоже, возникла проблема с попыткой загрузить VARCHAR (MAX) в строковое значение SSIS, мои строки базы данных имеют тип VARCHAR2 (PL SQL), но я установил максимальный размер равным 3. по всему пакету и до сих пор не повезло.

Я думаю, что проблема может быть связана с тем, что это тип VARCHAR2, но я не уверен, как сделать его совместимым с SSIS. Любая помощь, которую вы могли бы предложить, будет принята с благодарностью.

Спасибо, Стив


person Stephen Leake    schedule 05.07.2013    source источник


Ответы (1)


вернуть «CAR» и порядковый номер, если есть данные или «NUL» и 0, если нет

Переменной строкового типа нельзя присвоить значение NULL в службах SSIS. Вместо этого назначьте пустое строковое значение.

приведите значение возвращаемой строки типа varchar2 в вашем операторе select к varchar(3)

например. выберите приведение («CAR» как varchar (3)) из двойного

person S.M    schedule 05.07.2013
comment
Я думал, что это опечатка в вашем сообщении, ошибка, которую вы упомянули, связана с упомянутой причиной. - person S.M; 05.07.2013
comment
приведите значение возвращаемой строки типа varchar2 в операторе select к varchar(3), например. выберите приведение («CAR» как varchar (3)) из двойного - person S.M; 06.07.2013