Oracle
 sql >> Datenbank >  >> RDS >> Oracle

System.Data.OracleClient.OracleException:ORA-01036:ungültiger Variablenname/-nummer

Ich denke, dass Ihr Problem durch die Verwendung einer ungültigen Aufzählung in Ihren Add-Methodenaufrufen ausgelöst wird

Wenn Sie diesen Code ausführen, könnten Sie feststellen, dass der OracleType für Int32 ist nicht dasselbe wie 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

Daher schlage ich vor, die richtige Enum für Ihren ADO.NET-Anbieter zu verwenden.

Es ist interessant festzustellen, dass das Aufrufen von Add mit SqlDbType statt OracleType wird akzeptiert und löst keinen Compilerzeitfehler aus. Dies geschieht, weil die Add-Methode über eine Überladung verfügt, die ein Objekt als zweiten Parameter akzeptiert (es wird verwendet, um beim Erstellen des Parameters direkt einen Wert zu übergeben).

Eine Alternative ist die Verwendung von AddWithValue der OracleParameterCollection

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