SSIS чтение / запись в переменную в скриптовой задаче - PullRequest
1 голос
/ 11 октября 2011

У меня есть переменная с именем 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

1 Ответ

1 голос
/ 12 октября 2011

Это в задаче потока данных, да? Вы не можете изменить переменную в преобразовании скрипта, по крайней мере, во время процедуры processinputrow.

К счастью, похоже, что тип модификации, которую вы делаете, может быть выполнен - ​​просто в разных подпрограммах.

Моя книга по бета-версии сценариев SSIS, написанная Дональдом Фармером, находится в тысяче миль от меня, поэтому, пожалуйста, простите за неточность этого кода. Важно то, что вы можете записать переменную пользователя только из события 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
...