簡體   English   中英

SSIS讀/寫腳本任務中的變量

[英]SSIS read/write to variable in script task

我有一個名為Valint的變量,我需要在腳本任務中對其進行讀/寫操作,但它似乎不起作用:

public class scriptmain
inherits usercomponent

dim counter as integer
dim Valint as integer
.....


Public sub new()
counter = 0
end sub

public overrides sub input0_processintputrow(byval row as input0buffer)
Dim vars as IDTSvariables100 = nothing

Me.variableDispenser.lockforread("User::Valint")
Me.variableDispenser.GetVariables(vars)

counter = CType (vars("User:: Valint").Value, integer)
vars.Unlock()

counter +=1

Me.VariableDispenser.LockoneForWrite("User::Valint", vars)
vars("User::Valint").Value = counter
vars.Unlock()
End Sub

由於某種原因,我的輸出始終為0

這是在數據流任務中,對嗎? 至少在processinputrow子例程期間,不能在腳本轉換中修改變量。

幸運的是,看起來您正在執行的修改類型可以完成-只是在不同的子例程中。

我的唐納德·法默(Donald Farmer)編寫的SSIS腳本Beta版距我有一千英里,所以請原諒此代碼的不精確性。 重要的是,您只能從PostExecute事件中寫入用戶變量。

public class scriptmain
inherits usercomponent

dim counter as integer
dim Valint as integer
.....


Public sub new()
counter = 0
end sub

public overrides sub input0_processintputrow(byval row as input0buffer)
    counter +=1
End Sub

Public overrides sub PostExecute()
    Dim vars as IDTSvariables100 = nothing

    Me.variableDispenser.lockforread("User::Valint")
    Me.variableDispenser.GetVariables(vars)

    counter = CType (vars("User:: Valint").Value, integer)
    vars.Unlock()
    Me.VariableDispenser.LockoneForWrite("User::Valint", vars)
    vars("User::Valint").Value = counter
    vars.Unlock()
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM