• SSIS Execute SQL Task 用法


    Execute Sql Task组件是一个非常有用的Control Flow Task,可以直接执行SQL语句,例如,可以执行数据更新命令(update,delete,insert),也可以执行select查询语句,返回结果集,结果集可以是一行,也可以是多行。

    一,General 选项卡

    1,返回结果集(Result Set)

    1. None:表示不返回结果,在执行Update,delete或insert命令时,使用该选项;
    2. Single row:返回单行结果,可以在Result Set 选项卡中,将结果集返回到1个或多个变量中
    3. Full result set:返回多行结果,结果集存储在object对象中

    2,组件执行的SQL命令(SQL Statement) 

    • ConnectionType:连接到数据源的链接类型,如果是OLEDB链接,选中OLE DB;
    • Connection:链接字符串
    • SQLSourceType:SQL数据源的类型,共有三个选项:Direct Input,File Connection 和 Variable。Direct Input表示:直接输入SQL命令;FileConnection表示:将SQL命令保存在.sql文件中;Variable表示:SQL命令保存在SSIS的变量中,如果Execute SQL Task执行的SQL命令是动态变化的,使用Variable选项较好;
    • SQLStatement:要执行的SQL语句,根据SQLSourceType的不同,有三种不同的值:SQL语句,.sql文件路径,或SSIS变量;

     3,示例:SQLSourceType=Variable

    二,Expressions选项卡

    SSIS Package的属性,既可以在General Tab中手动配置,也可以在Expressions Tab中配置,将配置属性的值保存到变量中,可以动态控制包的执行,

    示例,将SqlStatementSource的值存储在变量中,结果和SqlSourceType=Variable是一样的,只不过实现方式不同,并且SSIS在执行过程中,使用Expressions的属性覆盖General中配置的属性值。

    三,Result Set选项卡

    如果在General选项卡中,将Result Set设置为Singel Row,可以将结果值存储在变量中

    四,Parameter Mapping 选项卡

    如果sql命令在执行的过程中需要传递参数,可以在Parameter Mapping 选项卡中进行配置。如果使用的OLE DB 链接,需要使用 ?代表第一个参数,并且在Parameter Mapping 中将parameter name设置为参数的序号,第一个? 的序号是0,即序号从0依次递增

    五,返回受影响数据的行数

    ExecValueVariable 属性是Task的标准属性。有些Task在执行完成后,会返回输出结果,为了获取Task的输出结果,我们可以定义一个变量,存储输出结果。Task的ExecValueVariable属性就是用来指定存储Task输出结果的变量名。默认属性值是none,表示task的输出结果不会被存储。

    Execute SQL Task 返回被更新的数据的行数,我们可以为ExecValueVariable属性指定一个变量,用来接收Task的输出值(Execution value),在下游组件中可以引用该变量,获取 Execute SQL Task 更新的数据行数。

    Returns the number of rows affected by the SQL statement(s).The ExecValue is using the @@ROWCOUNT to assign the value of the variable and absent a @@ROWCOUNT the value returned is -1.

    示例 Execute Sql Task的ExecValueVariable 用法

    1,设计Package的Control Flow

    Execute Sql Task的属性:ExecValueVariable的值是变量varCount,该Task执行的SQL语句如下:

    insert into dbo.delay_test
    VALUES(1),(2),(3)
    
    insert into dbo.delay_test
    VALUES(2),(3)

    Task:insert Data执行的SQL语句是,传入的参数是User::varCount

    insert into dbo.dt_test
    values(?)

    2,查看结果,第一个Task返回的结果是varCount是2,这个结果实际上是@@RowCount,SSIS在执行语句之后,将@@RowCount赋值到Execute SQL Task 属性ExecValueVariable指定的变量中。

  • 相关阅读:
    Angular(一)
    go微服务系列(四)
    导包路径
    django导入环境变量 Please specify Django project root directory
    动手动脑三
    动手动脑二
    大柱
    日报
    验证码
    动手动脑
  • 原文地址:https://www.cnblogs.com/zhengxingpeng/p/6688008.html
Copyright © 2020-2023  润新知