0

我需要帮助。我想从表的列中获取 XML 数据。XML 数据有很多标签。其中一个标签包含如下值

<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
  • 创建 2 个变量来存储 XML 列日期值,另一个用于获取当前日期。要编写表达式,请选择变量,右键单击它。在属性窗口中设置EvaluateAsExpression =true并编写expression

      Name          DataType   Expression 
     ExecDate       DateTime
     CurrentDate    DateTime    GETDATE()
    
  • 使用Execute SQL Task.Set ResultsettoSingle 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
    
  • 在Precedence ConstraintSEND Mail TASK之后放置另一个 Task 或组件 ExExecute SQL Task并写一个表达式。

    Expression : @ExecDate==@CurrentDate
    

只有当 XML 列中的日期值与存储在变量中的当前日期匹配时,才会执行@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 回答