公告版位
哈囉,丫德我會常常更新一些工作上的心情記事及資訊科技新知與大家分享...

我們再延續上一次的主題,繼續介紹,在SSIS中的控制流程,也可以加入變數來控制流程

現在我們在畫面放2個"指令碼工作"元件,如下圖

image

接下來,我們設定一個全域變數,首先叫出變數視窗,怎麼叫呢,可在畫面上空白的地方,按滑鼠右鍵,選擇變數

image

點選新增變數

image

在變數的名稱上輸入"var1",其他的按預設值即可,另外要說明的部份,是若範圍的名稱=你的dtsx檔名,則代表該變數為全域變數,可以在任何一個元件上引用的到,若範圍名稱<>你的dtsx檔名,則表示他只屬某一個元件能使用的變數,所以在設定要必須注意!

 image

接下來在畫面上的綠色線上按滑鼠右鍵,在評估作業中選擇"運算式"..

我們在畫面中還有看到其實選項

運算式與條件約束-->表示用變數的條件 and 條件約束(成功、失敗、完成)的條件來決定流程的走向

運算式或條件約束-->表示用變數的條件 or 條件約束(成功、失敗、完成)的條件來決定流程的走向

image

在運算式的部份,輸入@var==1,這個表示說,當變數==1的時候,代表成功

image

管線上若有一個fx圖示,表示這條管線中,有含以運算式當做條件

image

接下來我們把變數改成1

image

再執行後結果如下,既使"指令碼工作"是成功,但變數的值不符合之前所設定的"0",所以也還是不會往下執行

image

本次介紹的部份,已經將管線的運用,算是大致上介紹完了,從Part1~Part3,了解其中的意義後,在流程的規劃使用上可以有更靈活的應用囉..

.以上的介紹,是本人自己做的範例介紹,希望對大家有幫助,有問題的話,可以留言給我,互相討論一下囉!

創作者介紹

信德隨想

丫德 發表在 痞客邦 PIXNET 留言(11) 人氣()


留言列表 (11)

發表留言
  • 妮
  • 你好^^
    我想請問當我新增一個變數時,他"範圍"的地方是無法修改的,不知道是不是有哪些屬性設定的地方需要勾選? 才會導致無法修改?

    謝謝
  • 丫德
  • 你好,範圍一但設定後就不能改了,比較快的方式是刪掉再建立一次,另外若變數是要設成全域的,請不要選擇任何控制項再新增就是全域的了
  • 訪客
  • 你好,請問你說的刪掉在建立一次,是單純的點"加入變數"嗎? 還是要從什麼地方要重頭開始設定? 不好意思是個新手,當初Packet是有人已經建立好的,我只是事後需要修改 所以很多細節不是很清楚 麻煩你了

    很謝謝你的回答!
  • 丫德
  • 你好
    你的回覆中寫到
    刪掉在建立一次,是單純的點"加入變數"嗎?

    我的回答是文章中有寫到哦
    我們設定一個全域變數,首先叫出變數視窗,怎麼叫呢,可在畫面上空白的地方,按滑鼠右鍵,選擇變數
    之後點新增就是全域變數了
  • 訪客
  • 您好, 我有仔細看過文章喔^^

    因為有看到你文章說"範圍的名稱=你的dtsx檔名,則代表該變數為全域變數"
    但是我叫出變數視窗點選新增後,他自動帶出的範圍<>dtsx檔名
    (他是自動帶出另一個dtsx的檔名) 所以我不知道該如何處理,才能讓範圍=dtsx檔名
  • 應該不會,在ssis中你開啟dtsx後,在畫面的任何空白地方點右鍵,變數,然後再新增一個變數時範圍就會是該dtsx的名稱,因為我沒有辦法看到的畫面,所以不知道你是怎麼操作,不過大致上若操作正確應該是會符合我說的結果才是

    丫德 於 2013/04/19 15:11 回覆

  • 訪客
  • 您好, 我擷取了畫面
    file:///C:/Users/Nina%20Lin/Desktop/2013-4-19%20%E4%B8%8B%E5%8D%88%2003-23-14.jpg

    名稱是K31toAccRP.dtsx
    當我新增變數時(第三個變數),他範圍會顯示K33toAccRP.dtsx
    (第一&第二個變數是之前其他人設定的,但是範圍是不對的)
    所以很困擾不知道該如何處理

  • 你得要將圖片放到網路上的共享,這樣才可以看的到哦

    丫德 於 2013/04/19 15:31 回覆

  • 訪客
  • 不好意思 網址錯誤
  • 訪客
  • 你好 這張有清楚一點
    http://imageshack.us/photo/my-images/248/2013419034253.jpg/

    我有兩個dtsx檔 名稱很像,一個是K31 一個是 K33
    當我在K31新增變數時 他範圍會出現K33

    請問你知道這樣該怎麼處理嗎? 謝謝你喔^^
  • 有看到了
    我這邊試了一些情況,但都不會像你的圖那樣
    我是用vs2008試的

    我有試新建一個test.dtsx,然後新增變數,這時變數的範圍是test,然後將test.dtsx改名為tesst1.dtsx ,之前新增的那個變數還是test,再新增一個變數時,範圍是test1,這樣看來是有點怪沒錯,但將dtsx檔關掉再重開後,變數的範圍就會一致呈現與檔名相同

    另一種是copy別的dtsx過來修改的,情況也是同上所述
    你的作法是copy別的dtsx嗎?要不要copy完後將這個dtsx檔存檔後,關掉再重開啟看看呢?

    丫德 於 2013/04/19 15:55 回覆

  • 訪客
  • 你好 我有懷疑當初K31是不是copy K33過來改的 我會照你說的試看看
    真的很謝謝你!!! ^^
  • 訪客
  • 你好 我照您說的果然解決問題了!!!!!!
  • ok,恭禧你了

    丫德 於 2013/04/19 16:29 回覆

找更多相關文章與討論