Execute SQL Task 第一篇:用法简介

Execute SQL Task组件是SSIS中最重要的Control Flow Task之一,可以直接执行TSQL语句修改数据,例如,可以执行数据更新命令(update,delete,insert),也可以执行select查询语句,把返回的结果存储到变量中。

一,General 选项卡

Genernal 选项卡中,配置EXECUTE SQL TASK组件的常用属性。

1,简单的属性

TimeOut 选项:指定Task超时的时间,单位是秒,默认值是0,表示超时时间无限长。

CodePage 选项:指定Code Page,在把Unicode值传递给变量时,用于把字符串值翻译成特定的code page。该选项仅用于OLE DB 和ADO.NET 连接。

TypeConversionMode选项:如果设置为Allowed,当把输出型参数(output parameter)和查询结果(Single row)赋值给变量时,Execute SQL Task将尝试把输出型参数和查询结果转换为变量的数据类型,这个选项仅适用于单行结果集类型。

2,返回结果集(Result Set)

Task组件返回的结果集,

None:表示不返回结果,在执行Update,delete或insert命令时,使用该选项;Single row:返回单行结果,可以在Result Set 选项卡中,将结果集返回到1个或多个变量中Full result set:返回多行结果,结果集存储在object对象中XML:返回的结果是XML类型,常用于for xml 子句中。

如果Execute SQL Task 使用 Full result set, 查询会返回多个行集(multiple rowsets),但是该Task只会获取第一个行集(rowset)。

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的变量中。SQLStatement:要执行的SQL语句,根据SQLSourceType的不同,有三种不同的值:SQL语句,.sql文件路径,或SSIS变量;

3,举个例子

如果Execute SQL Task执行的SQL命令是动态变化的,使用Variable选项较好。

首先创建一个变量,变量的数据类型是String,为变量赋值为有效的TSQL语句:

设置SQLSourceType 为 Variable 类型,并在SourceVariable中设置保存TSQL语句的变量:

二,Expressions选项卡

SSIS Package的属性,既可以在General 选项卡中手动配置,也可以在Expressions 选项卡中通过参数配置。通过表达式配置的属性,最终会覆盖在General选项卡中显式配置的属性。Execute SQL Task的各个属性,都可以在Expression中进行配置,如果把属性的值保存到变量中,那么动态控制Task的执行。

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

三,Result Set选项卡

Result Set 选项卡用于把Task返回的结果集绑定到变量中,如果ResultSet的类型是None,那么该选项卡是禁用的。

在General选项卡中,如果把Result Set设置为Single Row,那么Result Name 可以是返回字段的名称,也可以是字段的序号,序号从0开始,

如果Result Set的类型是 Full result set 或 XML,那么Result Name 必须是字段的序号,序号从0开始。

四,Parameter Mapping 选项卡

如果SQL命令在执行的过程中需要传递参数,那么需要在Parameter Mapping 选项卡中进行配置,把变量和参数绑定到一起。变量在SSIS中创建,而参数需要在SQL命令中配置,不同类型的连接管理器,SQL命令中的参数占位符是不同的。

1,参数的方向(Direction)

如果SQL命令是输出型参数,那么需要设置Direction为Output,表明SQL 命令把参数的值传递给变量;如果SQL 命令是输入型参数,那么需要设置Direction为Input,表明把变量的值传递给SQL 命令;如果SQL命令会返回值,那么需要设置Direction为ReturnValue,表明把SP的返回值传递变量。

2,参数的名称

如果使用的OLE DB 链接,需要使用 ?代表一个参数,并且在Parameter Mapping 中将parameter name设置为参数的序号,第一个?的序号是0,第二个?的序号是1,参数的序号从0依次递增,通过顺序来匹配。如果使用的是Ado.Net连接管理器,那么参数的命名格式是 @varParameter,使用参数名来匹配。

详细信息,请阅读《Parameters in the Execute SQL Task》

3,参数的类型

参数的类型非常丰富,除了NULL和GUID之外,可以分为:

有符号的整数型:SIGNEDCHAR、SHORT、LONG、LARGE_INTEGER无符号的整数型:BYTE、USHORT、ULONG、ULARGE_INTEGER精确小数类型:DECIMAL、CURRENCY、NUMERIC、DB_VARNUMERIC浮点数类型:FLOAT、DOUBLE布尔值类型:VARIANT_BOOL字符串类型:VARCHAR、NVARCHAR日期类型:DATE、DBDATE时间类型:DBTIME、DBTIME2日期和时间类型:DBTIMESTAMP、DBTIMESTAMPOFFSET、FILETIME

对于日期和时间类型,它们的字符串格式如下:

对于OLE DB连接管理器,当需要处理SQL Server数据类型是 date, time, datetime, datetime2, 和 datetimeoffset 时,需要根据参数的方向来设置参数的类型,参数类型的设置有如下规则:

对于输入型参数,参数的类型设置为:NVARCHAR对于输出型参数,参数的类型设置如下表所示五,获取返回值

从存储过程中获取返回值,有两种方式:通过输出型参数和SP返回的值。设置参数的方向为ReturnValue

对于OLEDB连接管理器,需要设置以下SQL语句:

EXEC ? = myStoredProcedure 1六,返回的结果集

在SSIS Package中,使用Execute SQL Task 可以获得SQL语句返回的结果集。

1,结果集的类型

指定结果集的类型

None:查询不返回任何结果,常见于insert、delete和update命令中。Single row:查询语句只返回单行Full result set:查询语句返回对行XML:查询语句返回的结果集是XML格式,常见于带 FOR XML的SELECT命令中

如果 Execute SQL task使用 Full result set ,并且查询语句返回多个行集(multiple rowsets),该Task只会获取第一个行集(first rowset)

2,把结果集绑定到变量

如果结果集的类型是 single row, rowset, 或 XML,可以把结果集绑定到用户自定义的变量中。

在参数映射中,Result Name的名称有如下规则:

当结果集的类型是Single row时,使用列名或列的序号(从0开始)把列绑定到变量中。当结果集的类型是full result set 或XML时,必须使用 0作为结果集的名称。

结果集和变量的数据类型必须兼容:

对于Single row结果集,行中每列的类型必须和变量的类型相兼容。对于XML结果集,绑定的变量的数据类型是String 或 Object数据类型。如果变量的类型是String,那么 Execute SQL task 返回字符串类型;如果变量的类型是Object,那么 Execute SQL task 返回的是Document Object Model (DOM) object。对于Full result set结果集,绑定的变量的数据类型必须是Object数据类型,返回的结果是一个行集对象(rowset object),可以把变量传递给Foreach Loop 容器,通过该Foreach Loop容器逐行抽取表中各行中的列。七,返回受影响数据的行数

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指定的变量中。

版权声明:本文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不做权威认证,不拥有所有权,不承担相关法律责任,转载请注明出处。本文地址:https://www.sip-server.cn/49235.html

上一篇 2023年6月24日 下午3:33
下一篇 2023年8月10日 上午10:44

相关推荐

  • 博客怎么赚钱(博客怎么样)

    您是经验丰富的博主吗?还是您只是想了解博客世界的新手?无论您站在什么立场,我们都有一个共同的目标:写出更好的博文。所以这里有一些关于如何通过 博客的伟大之处在于它在不断发展。总有新的提示和技巧可以帮助您将博客提升到一个新的水平。 什么是博客? 博客的核心是与世界分享您的想法和经验。这是一种与志趣相投的人联系的方式,也是分享您独特的声音和观点的平台。 为什么写…

    创业分享 2023年3月15日
    10500
  • 微信怎么解封账号-微信登不上去怎么办

    微信被限制了怎么解除限制?当出现了限制的提示时,往往伴随着被封号/限制的处罚,给生活和工作带来极大的影响,今天我们来讲一讲相关知识与解决方法,希望能够帮助到大家! 当出现问题时,不要惊慌和抱怨,先仔细的阅读系统限制的公告,根据公告中的相关信息先确认限制的类型。 常见的限制分为两类:“限制登录”和“限制功能”.所谓的限制登录是指账号无法登录,而限制功能是指号可…

    2023年2月2日
    8800
  • 养什么鸽子最赚钱(农村养鸽子挣钱吗)

    文/大海棠 现在社会发展的速度相信大家都是看在眼里的,除了城市,农村的发展速度其实是更加的迅速的,很多地区都逐渐摆脱贫穷,温饱问题早已解决,朝着”小康村”的方向发展。现在农村能有这么好的面貌,一是得益于有关部门对农村经济发展的大力支持,二是农民通过外出打工、创业等自身的努力,最终使得很多村子越来越好。 时代确实也是在不断进步的,21世…

    2023年3月7日 创业分享
    11100
  • 微博炫富事件(网上炫富的好处与坏处)

    最近微博上又掀起了一波“炫富挑战”热 大家纷纷脸朝地“扑街” 看似“一不小心”摔出了“全部家当” 实际上是在高调炫富 不信你看 你省吃俭用几个月买的奢侈品 人家直接摔了一地 除了网友 还有很多媒体和机构 纷纷晒出了行业的正能量 让人眼前一亮 but~ 不管炫富挑战怎么进行 都是为了博大家一笑 只是小编在这里要提醒各位看官 有些人炫富 可不单单是为了娱乐 而是…

    创业分享 2023年3月17日
    7700
  • 适合创业的小项目-2020年适合大学生创业的项目

    疫情期间,大量公司、厂房、店铺倒闭,很多人也因此失去了工作。但是,现代社会是一个多元化的社会,2023年,作为“穷人”和普通人的我们,想要谋取一份工作或者创业机会,也并非不可能,前提在于我们需要好好谋划。下面的这些创业项目投资小,而且不需要多大的投资,但是回报却是稳稳的。 1、出摊卖小吃。小吃摊不是小吃店,可以减少租金的投入。但关键是找到适合自己的经营品。因…

    2023年2月1日
    12500
  • 乔布斯死亡原因(乔布斯癌症治好了)

    一提到苹果手机,人们都会想到乔布斯。这周五(2月24日)是苹果公司创始人乔布斯的生日。众所周知,乔布斯患癌8年后去世,当时年仅56岁。很多人以为他得的是恶性胰腺癌,然后猜想肯定是因为他很有钱,所以才能活这么久,毕竟胰腺癌的平均生存期还不到1年。 其实乔布斯当年的癌症,很多人都搞错了。他得的不是胰腺癌,而是胰腺神经内分泌瘤(缩写为PNET),是一类恶性程度较低…

    2023年3月21日 创业分享
    8900
  • 网站首页被k(网站被k查询)

    大家好,我是黄大司,今天我们讲一下,网站被K的问题。 网站被K是什么意思呢?K是英文单词Kill(杀)的缩写,网站被K,意思就是网站被搜索引擎封杀了,网站被K对于站长和公司来说,都会造成比较大的流量损失,网站被K一般会出现这样一些情况:1、全站被K;2、首页被K;3、内页被K;4、快照停滞;5、快照回档;6、不放出收录;7、site网站不在首页;8、蜘蛛不抓…

    创业分享 2023年3月19日
    8200
  • 博客优化网站seo怎么写文章(文思泉什么意思)

    本篇文章我们将分享6个SEO技巧,帮助你的营销团队能更快速编写吻合优质SEO结构的内容文章。 本文节选自2022年SKUKING跨境电商数字化赋能沙龙撷英分享,根据SKUKING跨境电商研究中心编辑整理。粉丝朋友可以「点击头像,进入主页」查看往期内容中SKUKING的更多分享,获取完整行业洞察报告等资料。 当你发布的博客文章使用SEO技巧、执行策略性的撰写方…

    2023年3月14日 创业分享
    7400
  • 女性创业项目(有没有适合女性创业的项目)

    当今社会,女性的压力越来越大,不仅要和男性一样外出打拼,有时还需要背负沉重的家庭责任。但有时候压力就是动力,越来越多的女性开始走上创业的道路,期望通过创业来实现自己的人生价值。那么女性创业该选择什么项目呢?投资开店就来和大家分享四个适合女性创业的新兴创业项目。 第一、贩卖灌装氧气。慈善名人陈光标可以卖新鲜空气,那女性创业者选择贩卖氧气作为创业项目同样可行。现…

    2023年2月12日
    8900