1

Oracleストアドプロシージャを呼び出す次のASP.NETプログラムがあります。

Dim objDBCon As New OracleConnection(strCon)
Try
    objDBCon.Open()
        Dim objDBCmd As New OracleCommand("Person.DeletePerson", objDBCon)
        objDBCmd.CommandType = CommandType.StoredProcedure

        Dim objParam As New OracleParameter
        objParam.ParameterName = "PersonID"
        objParam.OracleDbType = OracleDbType.Varchar2
        objParam.Direction = ParameterDirection.Input
        objParam.Value = PersonID
        objDBCmd.Parameters.Add(objParam)

        objParam = New OracleParameter
        objParam.ParameterName = "nReturn"
        objParam.OracleDbType = OracleDbType.Int64
        objParam.Direction = ParameterDirection.Output
        objDBCmd.Parameters.Add(objParam)

        objDBCmd.CommandTimeout = 30
        objDBCmd.ExecuteNonQuery()
        strResponse = objDBCmd.Parameters("nReturn").Value
Catch ex As Exception


Finally

'Cleanup code here

End Try

コードは、ライブ環境と古い開発用PCで完全に機能します。ただし、新しい開発用PCでは、次の行で例外がスローされます:strResponse = objDBCmd.Parameters( "nReturn")。Value。例外は次のとおりです。「タイプOracleDecimalからタイプStringへの変換は無効です。strResponseのデータ型を「Decimal」に変更すると、例外は「タイプOracleDecimalからタイプStringへの変換は無効です」です。開発用PC次のものがインストールされています:Windows 7、.NETフレームワーク3.5、Visual Studio 2008、Oracle.DataAccessバージョン10.2.0.100およびバージョン2.112.1.0。このエラーに関する情報が見つかりません。どういう意味ですか?

更新私の新しい開発用PCが64ビットウィンドウであるためかどうか迷っています

4

1 に答える 1

1

設定する代わりに:

objParam.OracleDbType = OracleDbType.Int64

試す:

objParam.DbType = System.Data.DbType.Int64

また、次の変更が必要になる場合があります。

strResponse = objDBCmd.Parameters("nReturn").Value

に:

strResponse = objDBCmd.Parameters("nReturn").Value.ToString()

または:

strResponse = objDBCmd.Parameters("nReturn").ToString()
于 2012-05-16T22:21:51.887 に答える