Vb.Net/SSIS脚本任务 - 处理空值

时间:2012-11-22 07:53:11

标签: vb.net ssis

请参阅下面的代码(处理空值的问题)

Dts.Variables("File_Name").Value = Framework.GetValue("FileName")
Dts.Variables("File_Id").Value = Framework.GetValue("FileName")

Dts.Variables("File_Name").Value - Data type defined in STRING
Dts.Variables("File_Id").Value - Data type defined in INTEGER

Framework.GetValue - 返回STRING(获取存储在数据库中的值)

问题 - 当Framework.GetValue因为数据库中不存在值而返回任何内容时,它会在SSIS脚本组件中引发错误。如何捕获NULL是我们面临的问题

Public Function GetValue(ByVal FetchParameter As String)As String

Dim lGetValue As String = String.Empty

Using Conn New SqlConnection(ConnString)
    SQLCommand = New SqlCommand("ParameterValues", _ETLFrameworkConn)
    SQLCommand.CommandText = "Select ParamValue from ParameterValues where Parameter_Name=@ParameterField"
    SQLCommand.Parameters.Add(New SqlParameter("@ParameterField").Value SqlDbType.NVarChar))
    SQLCommand.Parameters("@ParameterField").Value = FetchParameter 
    Try
        Conn.Open()
        lGetValue = SQLCommand.ExecuteScalar()
    Catch ex As Exception

    End Try
End Using

Return lGetValue 

结束功能

此致

1 个答案:

答案 0 :(得分:0)

在GetValue()函数中尝试以下代码段。在代码中添加了DBNULL处理。如果没有值,将写入String.Empty。

Dim lGetValue As String = String.Empty

Using Conn New SqlConnection(ConnString)
    SQLCommand = New SqlCommand("ParameterValues", _ETLFrameworkConn)
    SQLCommand.CommandText = "Select ParamValue from ParameterValues where Parameter_Name=@ParameterField"
    SQLCommand.Parameters.Add(New SqlParameter("@ParameterField").Value SqlDbType.NVarChar))
    SQLCommand.Parameters("@ParameterField").Value = FetchParameter 
    Try
        Conn.Open()
        var retrunVal = (string)SQLCommand.ExecuteScalar()

        IF returnVal = DBNULL.Value Then
            lGetValue = returnVal
        End

    Catch ex As Exception

    End Try
End Using

Return lGetValue 

希望这有帮助!