Выражение переменной SSIS - преобразовать в строку - PullRequest
0 голосов
/ 25 мая 2020

Я создал строковую переменную в SSIS и выражение адреса в построителе выражений следующим образом: Evaluate Expression работает нормально. Но при запуске моего пакета он выдает ошибку. Я знаю, что это проблема с кастингом. Я не мог это исправить. Кто-нибудь может мне помочь?

"dbo.zkt_attendance_Date ' (DT_STR, 2, 1252) DATEPART(YYYY, GETDATE() ) ',' (DT_STR, 2, 1252) DATEPART(MM, GETDATE() )','+ (DT_STR, 2, 1252) @[User::Dates] +'"

Expression Builder

Vaiable

1 Ответ

0 голосов
/ 25 мая 2020

У вас есть

"dbo.zkt_attendance_Date ' (DT_STR, 2, 1252) DATEPART(YYYY, GETDATE() ) ',' (DT_STR, 2, 1252) DATEPART(MM, GETDATE() )','+ (DT_STR, 2, 1252) @[User::Dates] +'"

Это буквально означает

"dbo.zkt_attendance_Date ' (DT_STR, 2, 1252) DATEPART(YYYY, GETDATE() ) ',' (DT_STR, 2, 1252) DATEPART(MM, GETDATE() )','+ (DT_STR, 2, 1252) @[User::Dates] +'"

Двойные кавычки - это начало / конец строкового литерала в языке выражений. Вместо этого вы хотите смешивать и сопоставлять то, что находится в двойных кавычках, с операторами конкатенации +.

Что-то вроде этого (возвращается добавлено для удобства чтения)

"dbo.zkt_attendance_Date '" 
+ (DT_STR, 4, 1252) DATEPART("YYYY", GETDATE() ) 
+ "','"
+ (DT_STR, 2, 1252) DATEPART("MM", GETDATE() )
+ "', '"
+ (DT_STR, 2, 1252) @[User::Dates] 
+ "'"

Кроме того, (DT_STR, 2, 1252) DATEPART("YYYY", GETDATE() ) выйдет из строя, так как у вас есть усечение строки

Расчетное значение для этого , если у меня есть 03 в переменной @ [User :: Dates]

dbo.zkt_attendance_Date '2020','5', '03'
...