如何使用SQL表列的XML数据并根据标记值执行任务

时间:2013-03-20 16:53:52

标签: sql-server ssis

我需要一些帮助。我想从表的列中获取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很天真。

1 个答案:

答案 0 :(得分:1)

  • 创建2 variables来存储XML列Date值和另一个来获取当前日期。要编写表达式,选择变量,右键单击它。在属性窗口中设置{{ 1}}并写下EvaluateAsExpression =true

    expression
  • 使用 Name DataType Expression ExecDate DateTime CurrentDate DateTime GETDATE() 。设置Execute SQL TaskResultset并编写以下代码以从表格中的XML列读取日期值

    Single Row

SQL Fiddle

中的演示
  • SELECT convert(datetime,XMLData.value('(/Code/@date)[1]', 'varchar(10)'),103) as PkgDate from yourTable 地图中,上面的sql查询输出变量resultset tab

    ExecDate
  • Result Name Variable Name PkgDate ExecDate 之后放置另一个任务或组件Ex SEND Mail TASK,并在Precedence Constraint中写一个表达式。

    Execute SQL Task

仅当XML列的Date值与存储在变量Expression : @ExecDate==@CurrentDate 中的当前日期匹配时,才会执行@CurrentDate之后的其他组件。

Execute SQL Task

要执行上述表达式,您需要更改today's date= (Code date -2) or today's date = (code date + 1) run a mailer task.

中的sql代码

获取CodeDate +1

Execute SQL Task

我现在没有SSIS环境来测试它,但这就是你应该这样做的方式