您好,登錄后才能下訂單哦!
Execute Sql Task組件是一個非常有用的Control Flow Task,可以直接執行SQL語句,例如,可以執行數據更新命令(update,delete,insert),也可以執行select查詢語句,返回結果集,結果集可以是一行,也可以是多行。
一,General 選項卡
1,返回結果集(Result Set)
None:表示不返回結果,在執行Update,delete或insert命令時,使用該選項;
Single row:返回單行結果,可以在Result Set 選項卡中,將結果集返回到1個或多個變量中
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_testVALUES(1),(2),(3)insert into dbo.delay_testVALUES(2),(3)
Task:insert Data執行的SQL語句是,傳入的參數是User::varCount
insert into dbo.dt_testvalues(?)
2,查看結果,第一個Task返回的結果是varCount是2,這個結果實際上是@@RowCount,SSIS在執行語句之后,將@@RowCount賦值到Execute SQL Task 屬性ExecValueVariable指定的變量中。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。