Так как я не могу использовать? в более сложных инструкциях SQL, которые мы выполняем, мы читаем где-то, что вы можете установить предыдущий шаг, чтобы настроить SQL для вас. Это шаг ActiveX, который устанавливает SQL-оператор шагов и подставляет его в глобальные переменные.
Таким образом, шаг SQL имеет SELECT 0 и шаг, предшествующий ему, по сути, является сценарием VB, как показано ниже
'205 (Изменить SourceSQLStatement)
Опция Явная
Функция Main ()
Dim oPkg, oDataPump, sSQLStatement
' Build new SQL Statement
sSQLStatement = "IF (SELECT 1 FROM TABLE fm WHERE NOT EXISTS ("&_
"SELECT HighestVersionReceived "&_
"FROM FILE_CURRENT fc "&_
"WHERE fc.COL = fm.COL "&_
"AND fc.HighestVersionReceived < fm.FileVersion) "&_
"AND [FileName] = '" & DTSGlobalVariables("GLBFileName").Value & "') = 1 "&_
"SELECT 1 AS VALID "&_
"ELSE "&_
"SELECT 0 AS VALID"
' Get reference to the DataPump Task
Set oPkg = DTSGlobalVariables.Parent
Set oDataPump = oPkg.Tasks("DTSStep_DTSExecuteSQLTask_34").CustomTask
' Assign SQL Statement to Source of DataPump
oDataPump.SourceSQLStatement = sSQLStatement
' Clean Up
Set oDataPump = Nothing
Set oPkg = Nothing
Main = DTSTaskExecResult_Success
Функция завершения
Однако он утверждает, что не может найти задачу с таким именем, он существует. Если мы изменим его на шаг из целого ряда задач, он будет найден, но у шага нет свойства SourceSQLStatement.
Так что я вне моей глубины. Есть идеи?
Возможно, измените тип шага, на котором выполняется SQL?