您好,登錄后才能下訂單哦!
Execute Sql Task組件是一個(gè)非常有用的Control Flow Task,可以直接執(zhí)行SQL語(yǔ)句,例如,可以執(zhí)行數(shù)據(jù)更新命令(update,delete,insert),也可以執(zhí)行select查詢語(yǔ)句,返回結(jié)果集,結(jié)果集可以是一行,也可以是多行。
一,General 選項(xiàng)卡
1,返回結(jié)果集(Result Set)
None:表示不返回結(jié)果,在執(zhí)行Update,delete或insert命令時(shí),使用該選項(xiàng);
Single row:返回單行結(jié)果,可以在Result Set 選項(xiàng)卡中,將結(jié)果集返回到1個(gè)或多個(gè)變量中
Full result set:返回多行結(jié)果,結(jié)果集存儲(chǔ)在object對(duì)象中
2,組件執(zhí)行的SQL命令(SQL Statement)
ConnectionType:連接到數(shù)據(jù)源的鏈接類型,如果是OLEDB鏈接,選中OLE DB;
Connection:鏈接字符串
SQLSourceType:SQL數(shù)據(jù)源的類型,共有三個(gè)選項(xiàng):Direct Input,F(xiàn)ile Connection 和 Variable。Direct Input表示:直接輸入SQL命令;FileConnection表示:將SQL命令保存在.sql文件中;Variable表示:SQL命令保存在SSIS的變量中,如果Execute SQL Task執(zhí)行的SQL命令是動(dòng)態(tài)變化的,使用Variable選項(xiàng)較好;
SQLStatement:要執(zhí)行的SQL語(yǔ)句,根據(jù)SQLSourceType的不同,有三種不同的值:SQL語(yǔ)句,.sql文件路徑,或SSIS變量;
3,示例:SQLSourceType=Variable
二,Expressions選項(xiàng)卡
SSIS Package的屬性,既可以在General Tab中手動(dòng)配置,也可以在Expressions Tab中配置,將配置屬性的值保存到變量中,可以動(dòng)態(tài)控制包的執(zhí)行,
示例,將SqlStatementSource的值存儲(chǔ)在變量中,結(jié)果和SqlSourceType=Variable是一樣的,只不過(guò)實(shí)現(xiàn)方式不同,并且SSIS在執(zhí)行過(guò)程中,使用Expressions的屬性覆蓋General中配置的屬性值。
三,Result Set選項(xiàng)卡
如果在General選項(xiàng)卡中,將Result Set設(shè)置為Singel Row,可以將結(jié)果值存儲(chǔ)在變量中
四,Parameter Mapping 選項(xiàng)卡
如果sql命令在執(zhí)行的過(guò)程中需要傳遞參數(shù),可以在Parameter Mapping 選項(xiàng)卡中進(jìn)行配置。如果使用的OLE DB 鏈接,需要使用 ?代表第一個(gè)參數(shù),并且在Parameter Mapping 中將parameter name設(shè)置為參數(shù)的序號(hào),第一個(gè)? 的序號(hào)是0,即序號(hào)從0依次遞增
五,返回受影響數(shù)據(jù)的行數(shù)
ExecValueVariable 屬性是Task的標(biāo)準(zhǔn)屬性。有些Task在執(zhí)行完成后,會(huì)返回輸出結(jié)果,為了獲取Task的輸出結(jié)果,我們可以定義一個(gè)變量,存儲(chǔ)輸出結(jié)果。Task的ExecValueVariable屬性就是用來(lái)指定存儲(chǔ)Task輸出結(jié)果的變量名。默認(rèn)屬性值是none,表示task的輸出結(jié)果不會(huì)被存儲(chǔ)。
Execute SQL Task 返回被更新的數(shù)據(jù)的行數(shù),我們可以為ExecValueVariable屬性指定一個(gè)變量,用來(lái)接收Task的輸出值(Execution value),在下游組件中可以引用該變量,獲取 Execute SQL Task 更新的數(shù)據(jù)行數(shù)。
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,設(shè)計(jì)Package的Control Flow
Execute Sql Task的屬性:ExecValueVariable的值是變量varCount,該Task執(zhí)行的SQL語(yǔ)句如下:
insert into dbo.delay_testVALUES(1),(2),(3)insert into dbo.delay_testVALUES(2),(3)
Task:insert Data執(zhí)行的SQL語(yǔ)句是,傳入的參數(shù)是User::varCount
insert into dbo.dt_testvalues(?)
2,查看結(jié)果,第一個(gè)Task返回的結(jié)果是varCount是2,這個(gè)結(jié)果實(shí)際上是@@RowCount,SSIS在執(zhí)行語(yǔ)句之后,將@@RowCount賦值到Execute SQL Task 屬性ExecValueVariable指定的變量中。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。