溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

SSIS Execute SQL Task 用法

發(fā)布時(shí)間:2020-07-27 02:05:55 來(lái)源:網(wǎng)絡(luò) 閱讀:889 作者:胡壯壯 欄目:數(shù)據(jù)庫(kù)

    

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)

  1. None:表示不返回結(jié)果,在執(zhí)行Update,delete或insert命令時(shí),使用該選項(xiàng);

  2. Single row:返回單行結(jié)果,可以在Result Set 選項(xiàng)卡中,將結(jié)果集返回到1個(gè)或多個(gè)變量中

  3. Full result set:返回多行結(jié)果,結(jié)果集存儲(chǔ)在object對(duì)象中

SSIS Execute SQL Task 用法

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

SSIS Execute SQL Task 用法

SSIS Execute SQL Task 用法

二,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中配置的屬性值。

SSIS Execute SQL Task 用法

三,Result Set選項(xiàng)卡

如果在General選項(xiàng)卡中,將Result Set設(shè)置為Singel Row,可以將結(jié)果值存儲(chǔ)在變量中

SSIS Execute SQL Task 用法

四,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依次遞增

SSIS Execute SQL Task 用法

SSIS Execute SQL Task 用法

五,返回受影響數(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

SSIS Execute SQL Task 用法

SSIS Execute SQL Task 用法

Execute Sql Task的屬性:ExecValueVariable的值是變量varCount,該Task執(zhí)行的SQL語(yǔ)句如下:

insert into dbo.delay_testVALUES(1),(2),(3)insert into dbo.delay_testVALUES(2),(3)

SSIS Execute SQL Task 用法

Task:insert Data執(zhí)行的SQL語(yǔ)句是,傳入的參數(shù)是User::varCount

insert into dbo.dt_testvalues(?)

SSIS Execute SQL Task 用法

2,查看結(jié)果,第一個(gè)Task返回的結(jié)果是varCount是2,這個(gè)結(jié)果實(shí)際上是@@RowCount,SSIS在執(zhí)行語(yǔ)句之后,將@@RowCount賦值到Execute SQL Task 屬性ExecValueVariable指定的變量中。

 


向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI