Oracle
 sql >> Base de données >  >> RDS >> Oracle

System.Data.OracleClient.OracleException :ORA-01036 :nom/numéro de variable illégal

Je pense que votre problème est soulevé par l'utilisation d'un enum invalide dans vos appels de méthodes Add

Si vous exécutez ce code, vous remarquerez peut-être que Type Oracle pour Int32 n'est pas le même que SqlDbType

OracleType e = OracleType.Int32;
int i = (int)e;
Console.WriteLine(i.ToString());   // Output = 28
SqlDbType z = SqlDbType.Int;
i = (int)z;
Console.WriteLine(i.ToString());   // Output = 8

Donc, je suggère d'utiliser l'énumération correcte pour votre fournisseur ADO.NET.

Il est intéressant de noter que l'appel de Add avec SqlDbType au lieu de OracleType est accepté et ne génère pas d'erreur de temps de compilation. Cela se produit parce que la méthode Add a une surcharge qui accepte un objet comme deuxième paramètre (elle est utilisée pour passer directement une valeur lors de la construction du paramètre).

Une alternative consiste à utiliser AddWithValue de la OracleParameterCollection

   command.Parameters.AddWithValue("@course_Id", course_Id);
   command.Parameters.AddWithValue("@question", question);
   command.Parameters.AddWithValue("@posterName", posterName);
   command.Parameters.AddWithValue("@blogdate", blog_date);