DTS在另一个步骤中为Step设置SQL语句

时间:2009-02-27 17:15:50

标签: dts

既然我似乎无法使用?在我们正在执行的更复杂的SQL语句中,我们在某处读取了您可以设置上一步为您设置SQL的步骤。这是一个ActiveX步骤,它设置SQL语句和替换全局变量的步骤。

因此SQL步骤中包含SELECT 0,而它之前的步骤本质上是一个VB脚本,如下所示

'205(更改SourceSQLStatement) 选项明确

功能主()     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

结束功能

然而它声明它找不到具有此名称的任务,它确实存在。如果我们将它更改为步骤intead of Tasks它已找到但步骤没有SourceSQLStatement属性。

所以我超出了我的深度。有什么想法吗?

可能更改运行SQL的步骤类型?

1 个答案:

答案 0 :(得分:1)

您是否尝试将复杂的TSQL语句更改为存储过程?

然后,您可以在FileName的存储过程中有一个输入参数。此存储过程可用作数据泵任务的源,参数在运行时通过“?”分配DTS全局变量的值。你提到的语法。