天天看點

SSIS Execute SQL Task 用法

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對象中

SSIS Execute SQL Task 用法

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

SSIS Execute SQL Task 用法
SSIS Execute SQL Task 用法

二,Expressions頁籤

SSIS Package的屬性,既可以在General Tab中手動配置,也可以在Expressions Tab中配置,将配置屬性的值儲存到變量中,可以動态控制包的執行,

示例,将SqlStatementSource的值存儲在變量中,結果和SqlSourceType=Variable是一樣的,隻不過實作方式不同,并且SSIS在執行過程中,使用Expressions的屬性覆寫General中配置的屬性值。

SSIS Execute SQL Task 用法

三,Result Set頁籤

如果在General頁籤中,将Result Set設定為Singel Row,可以将結果值存儲在變量中

SSIS Execute SQL Task 用法

四,Parameter Mapping 頁籤

如果sql指令在執行的過程中需要傳遞參數,可以在Parameter Mapping 頁籤中進行配置。如果使用的OLE DB 連結,需要使用 ?代表第一個參數,并且在Parameter Mapping 中将parameter name設定為參數的序号,第一個? 的序号是0,即序号從0依次遞增

SSIS Execute SQL Task 用法
SSIS Execute SQL Task 用法

五,傳回受影響資料的行數

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

SSIS Execute SQL Task 用法
SSIS Execute SQL Task 用法

Execute Sql Task的屬性:ExecValueVariable的值是變量varCount,該Task執行的SQL語句如下:

SSIS Execute SQL Task 用法

Task:insert Data執行的SQL語句是,傳入的參數是User::varCount

SSIS Execute SQL Task 用法

2,檢視結果,第一個Task傳回的結果是varCount是2,這個結果實際上是@@RowCount,SSIS在執行語句之後,将@@RowCount指派到Execute SQL Task 屬性ExecValueVariable指定的變量中。

本文版權歸作者和部落格園所有,歡迎轉載,但未經作者同意,必須保留此段聲明,且在文章頁面醒目位置顯示原文連接配接,否則保留追究法律責任的權利。

本文轉自悅光陰部落格園部落格,原文連結:http://www.cnblogs.com/ljhdo/p/4421758.html,如需轉載請自行聯系原作者