2

? を使用できないようですので、私たちが実行しているより複雑な SQL ステートメントでは、前のステップを設定して SQL をセットアップできることをどこかで読みました。これは、ステップ SQL ステートメントを設定し、グローバル変数に代入する ActiveX ステップです。

そのため、SQL ステップには SELECT 0 が含まれており、その前のステップは基本的に以下のような VB スクリプトです。

' 205 (SourceSQLStatement の変更) Option Explicit

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

終了機能

ただし、この名前のタスクが見つからないと述べていますが、存在します。これを Tasks ではなく Steps に変更すると検出されますが、Step には SourceSQLStatement プロパティがありません。

だから私は私の深さから出ています。何か案は?

おそらく、SQL を実行するステップのタイプを変更しますか?

4

1 に答える 1

1

複雑な TSQL ステートメントをストアド プロシージャに変更してみましたか?

次に、FileName のストアド プロシージャに入力パラメータを含めることができます。このストアド プロシージャは、データ ポンプ タスクのソースとして使用できます。パラメータには、実行時に "?" によって DTS グローバル変数の値が割り当てられます。あなたが言及する構文。

于 2009-03-10T13:10:40.707 に答える