请参阅下面的代码(处理空值的问题)
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
结束功能
此致
答案 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
希望这有帮助!