2012-05-16 1 views
0

je le programme ASP.NET suivant, qui appelle une procédure stockée Oracle:Microsoft.NET et l'accès aux données Oracle: Conversion de Type OracleDecimal à type String n'est pas valide

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 

Le code fonctionne parfaitement dans le environnement en direct et sur mon ancien PC de développement. Cependant, sur mon nouveau PC de développement, une exception est lancée sur la ligne suivante: strResponse = objDBCmd.Parameters ("nReturn"). Value. L'exception est: "Conversion de type OracleDecimal en type String n'est pas valide.Si je change le type de données de strResponse en 'Decimal', l'exception est:" La conversion de type OracleDecimal en type String n'est pas valide ". a installé les éléments suivants: Windows 7, .NET Framework 3.5, Visual Studio 2008, Oracle.DataAccess version 10.2.0.100 et la version 2.112.1.0 Je ne trouve aucune information sur cette erreur Qu'est-ce que cela signifie?

Mise à jour Je promenais si c'est parce que mon nouveau pc de développement est de 64 bit windows

+0

Cela semble être le sa moi une erreur? Ce qui voudrait dire que strResponse n'est probablement pas le problème ici – jeschafe

Répondre

0

au lieu de définir:

objParam.OracleDbType = OracleDbType.Int64 

Essayez:

objParam.DbType = System.Data.DbType.Int64 

également, vous devrez peut-être changer:

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

Pour:

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

Ou:

strResponse = objDBCmd.Parameters("nReturn").ToString() 
Questions connexes