2013-01-12 63 views
1

我有一個SSIS項目,我想將其中的一個包變量設置爲某個數據庫表中某列的最大值。假設包變量被稱爲var。將包變量設置爲數據庫中的值

我的SQL會是什麼樣子:

SET var = (SELECT max(some_column) from SomeTable) 

這是如何安裝到了SSIS控制流/數據流?這個SQL會進入什麼類型的任務?我甚至可以通過SQL訪問一個包變量?

回答

4

您可以使用執行Sql任務來完成此操作。語法根據您使用的數據庫連接的類型(OleDb或.Net)而有所不同。

如果您使用的是OLEDB連接管理器,您的SQL語句將是這個樣子:

SELECT ? = MAX(some_column) FROM some_table 

然後選擇參數映射標籤映射你的參數/變量。從「變量名稱」字段的下拉列表中選擇您的包變量。將方向設置爲輸出並將參數名稱設置爲0.(OleDb連接上的變量從0開始按順序映射)

如果您使用的是.Net連接管理器,則可以使用更爲熟悉的@variableName用於sql語句中的參數佔位符,以及執行SQL任務中的參數名稱。

編輯:回覆您的評論。看到從我的一個項目直接拉了幾個截圖。請比較你在做什麼,以確保我們在同一頁面上。

在這個鏡頭中,請注意執行Sql任務的連接類型,並注意Sql語句的最後一個語句,我選擇的參數等於一個sql函數。

SSIS Example 1

在接下來的鏡頭,看看我是怎麼配置的第二個參數,確保參數的方向設置爲輸出。該參數被命名爲1,因爲它是sql語句中的第二個參數/參數持有者。 SSIS Example 2

+0

您給出的查詢不會修改變量的值......我嘗試使用關鍵字'SET',但SSIS告訴我SET不受支持。我怎樣才能設置變量的值? – CodeKingPlusPlus

+2

您也可以跳過參數方法並將結果類型更改爲一行,然後在結果選項卡中映射值。在這種方法中,刪除參數佔位符(?)。 – billinkc

+0

@billinkc感謝您指出。這很容易。 – jlnorsworthy