0

助けが必要です。テーブルの列から XML データを取得するとします。XML データには多くのタグがあります。タグの1つに次のような値が含まれています

<Code date= 30/03/2013> 
<apr id =1> -2 </apr>
<rdv id =2> 1 </rdv>
</code>

日付をチェックする特定のタスクを実行する必要があります。today's date= (Code date -2)または_

today's date = (code date + 1)

メーラー タスクを実行します。

どうすればいいですか?XMLデータ形式についてはご容赦ください。私は XML に慣れていません。

4

1 に答える 1

1
  • XML 列の日付値を格納する2 つの変数を作成し、現在の日付を取得するもう 1 つの変数を作成します。式を作成するには、変数を選択し、右クリックします。プロパティ ウィンドウEvaluateAsExpression =trueで、expression

      Name          DataType   Expression 
     ExecDate       DateTime
     CurrentDate    DateTime    GETDATE()
    
  • Execute SQL Task.Set Resultsettoを使用Single Rowして次のコードを記述し、テーブルの XML 列から日付値を読み取ります。

    SELECT
    convert(datetime,XMLData.value('(/Code/@date)[1]', 'varchar(10)'),103) as PkgDate
    from yourTable
    

SQL Fiddleでのデモ

  • マップではresultset tab 、変数を使用した上記の SQL クエリからの出力ExecDate

    Result Name    Variable Name
    PkgDate           ExecDate
    
  • 別の Task またはコンポーネント ExSEND Mail TASKを後に置き、 Precedence ConstraintExecute SQL Taskに式を記述します。

    Expression : @ExecDate==@CurrentDate
    

XML 列の Date 値が、変数に格納されている現在の日付と一致する場合@CurrentDateにのみ、その後の他のコンポーネントのみExecute SQL Taskが実行されます。

today's date= (Code date -2) or today's date = (code date + 1) run a mailer task.

上記の式を実行するには、SQL コードを変更する必要があります。Execute SQL Task

CodeDate +1 を取得するには

    SELECT
    Dateadd(day,1,convert(datetime,XMLData.value('(/Code/@date)[1]', 'varchar(10)'),103)) as PkgDate
    from yourTable

私は今それをテストするためのSSIS環境を持っていませんが、これはあなたがそれを行うべき方法です

于 2013-03-20T17:23:36.567 に答える