2012-06-11 63 views
2

enter image description here如何存儲SQL查詢結果的變量和messegeBox

我有我的執行。在SSIS包, SELECT MAX(binindex) SQL任務從dbo.myTable

我一個簡單的SQL查詢需要將這個最大索引存儲到一個變量中,然後將它傳遞給腳本任務並顯示它, 我已經聲明瞭一個包變量,包編譯,但是它每次顯示-1,我不知道我在做什麼錯了,任何幫助將不勝感激!

enter image description here

public void Main(){ 
    //TODO: Add your code here 
    Dts.TaskResult = (int)ScriptResults.Success; 
    MessageBox.Show(Dts.Variables["User::BININDEX"].Value.ToString()); 
} 

enter image description here

enter image description here

+0

什麼是dbo.MyTable列binindex的數據類型?什麼是SSIS變量@ [User :: BININDEX]的數據類型? – billinkc

+0

他們都是Int32 – user1429595

+0

當你在SSMS中運行查詢時,你會得到相同的結果嗎(我假設你不會問這個問題) – billinkc

回答

2

好消息是,你是正確的,據我可以看到所做的一切。我重新創建了包,並從我的查詢中獲得了期望的值。

Basic package

我也能促使你的情況 - 正確的值是從我的查詢返回的,但我的包產生「不正確的結果。」

negative one

的問題,我希望是,你必須在不同的範圍定義的兩個BININDEX變量。我最初的假設是Package的範圍是1,包含值爲-1,並且您有一個變量作用於具有相同名稱的「執行SQL任務」。默認行爲是將一個變量創建爲當前具有焦點的對象的作用域。順便說一句,這在SQL Server 2012版本中發生了變化。

由於您的圖片顯示了包範圍變量的設計時值123,因此您也有可能在腳本任務中定義了一個具有相同名稱BININDEX的變量。局部變量將覆蓋全局範圍上的腳本任務變量

variables window

點擊,希望你會看到那裏定義像上面一個BININDEX。否則,我認爲問題出在你的包中,你有BININDEX變量衝突。您可以嘗試通過Package Explorer來查找一個實例,其中列出了兩個具有相同名稱的變量。

package explorer

我需要離開,但如果沒有一個是這樣的話,在執行SQL任務添加PostExecute斷點,並在您的本地窗口看(不變量爲只反映設計時間值)。展開變量,你應該能夠看到BININDEX的值。那裏正確嗎?

enter image description here

+0

謝謝,無論如何,我欣賞它 – user1429595

相關問題