0

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

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是我们面临的问题

公共函数 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 

结束功能

问候

4

1 回答 1

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 

希望这可以帮助!

于 2012-11-22T10:33:34.650 回答