脚本组件出错

时间:2011-05-31 17:27:27

标签: c# ssis

HI,我在将数据从table1(stg)传输到table2(std)时发生跟踪错误。在脚本组件中,我试图在pertular colulmn中找到字符串“ABC”并将该字符串替换为“0.00”在脚本组件中使用c#。

at Microsoft.SqlServer.Dts.Pipeline.PipelineBuffer.CheckStatusAndNull(Int32 columnIndex)
at Microsoft.SqlServer.Dts.Pipeline.PipelineBuffer.GetDecimal(Int32 columnIndex)
at Input0Buffer.get_Underlying2()
at ScriptMain.Input0_ProcessInputRow(Input0Buffer Row)
at UserComponent.Input0_ProcessInput(Input0Buffer Buffer)
at UserComponent.ProcessInput(Int32 InputID, PipelineBuffer Buffer)
at Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.ProcessInput(Int32 inputID, PipelineBuffer buffer)

但是这里显示的错误是其他一些列(Underlying2).Error表示该列具有空值。 我已将约束应用为cleanbuffer.column_isnull = true; 仍然显示相同的错误。

请帮助解决上述问题。我是c#编码的新手。

感谢。

1 个答案:

答案 0 :(得分:0)

为什么不在派生列中执行此操作?

ISNULL(std)== TRUE?NULL(DT_STR,10,1252):替换(std," ABC"," 0.00")

以上一行说 "如果列std为null,则返回null,否则返回ABC替换为0.00"

的字符串

有一点需要注意。在示例中,我假设字符串是char(10)..用适当的大小替换10。