【问题标题】:DTS set the SQL statement for a Step in another stepDTS 为另一个步骤中的一个步骤设置 SQL 语句
【发布时间】:2009-02-27 17:15:49
【问题描述】:

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

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

' 205(更改源 SQL 语句) 显式选项

函数 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

结束函数

但是它声明它找不到具有此名称的任务,它确实存在。如果我们将其更改为 Steps 而不是 Tasks,则可以找到它,但 Step 没有 SourceSQLStatement 属性。

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

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

【问题讨论】:

    标签: dts


    【解决方案1】:

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

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

    【讨论】:

    • 我喜欢这种“如果你这样做,复杂性就会消失”。各种答案!
    猜你喜欢
    • 2015-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-01
    • 1970-01-01
    • 2022-07-26
    相关资源
    最近更新 更多