0

以下のコードを参照してください(null値の処理に関する問題)

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 に答える