【问题标题】:Vb.Net/SSIS Script Task - Handling null valuesVb.Net/SSIS 脚本任务 - 处理空值
【发布时间】:2012-11-22 07:53:11
【问题描述】:

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

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 

结束函数

问候

【问题讨论】:

  • 你遇到了什么错误?
  • 你能在你的 GetValue() 方法中发布代码吗?我认为您需要在返回之前检查 DBNULL.value 的值。
  • 我已经添加了代码,你可以看看。

标签: vb.net ssis


【解决方案1】:

在 GetValue() 函数中尝试以下代码 sn-p。在代码中添加了 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 

希望这会有所帮助!

【讨论】:

  • returnVal的类型是什么
  • 你也可以建议,当从这个函数传递的值被分配给 SSIS 中的 INTEGER 类型时,它会给我错误。如何投射?
  • 从代码中我理解的是方法返回字符串。 SSIS 将抛出错误。您应该知道数据类型。您期望从 GetValue() 方法获得什么数据类型?
  • returnVal 的类型是什么?
  • ExecuteScalar() 返回将返回对象。修改代码以将值类型转换为字符串。
猜你喜欢
  • 2010-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多