2015-08-13 2 views
0

У меня есть пакет SSIS, который выполняет задачу Execute SQL, где я использую следующую инструкцию, которая не работает. Не могли бы вы объяснить мне почему?SSIS: Вставка int32, значений строковых переменных в таблицу SQL

INSERT INTO SSIS.FIIN_FilesInfo 
    (FIIN_PKIN_package_id, FIIN_package_connection_string, FIIN_created_date) 
SELECT '" + @[User::package_id]] + "' AS Expr1, '" + @[User::package_connection_string]+ "' AS Expr2, GETDATE() AS Expr3 

Здесь FIIN_PKIN_package_id is int32 data type FIIN_package_connection_string is string data type

Это работает, если вставить только строковые значения, используя переменное отображение. Но это не сработает, если я попытаюсь вставить int32 и строковое значение, а затем с помощью сопоставления переменных это не так. Вот почему я так стараюсь. Спасибо заранее.

Примечание: С переменным отображением я использую этот запрос:

INSERT INTO SSIS.FIIN_FilesInfo 
    (FIIN_PKIN_package_id, FIIN_package_connection_string, FIIN_created_date) 
VALUES (?,?, GETDATE()) 

ответ

0

Вы должны преобразовать переменную int32 в строку.

В SSIS вы можете просто поместить тип (заключенный в скобки), к которому вы хотите преобразовать переменную перед переменной; в случае строки вы также должны указать максимальное количество символов.

Если int32 является @[User::package_id], тогда используйте (DT_WSTR, 10)@[User::package_id]; не забудьте настроить число 10 на максимальное ожидаемое количество символов.