sql >> Databáze >  >> RDS >> Oracle

System.Data.OracleClient.OracleException:ORA-01036:neplatný název/číslo proměnné

Myslím, že váš problém je způsoben použitím neplatného výčtu ve volání metod Add

Pokud spustíte tento kód, můžete si všimnout, že OracleType for Int32 není totéž jako 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

Navrhuji tedy použít správný výčet pro vašeho poskytovatele ADO.NET.

Je zajímavé poznamenat, že volání Add pomocí SqlDbType místo OracleType je přijat a nevyvolává chybu času kompilátoru. K tomu dochází, protože metoda Add má přetížení, které přijímá objekt jako druhý parametr (používá se k přímému předání hodnoty při vytváření parametru).

Alternativou je použití AddWithValue z OracleParameterCollection

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



  1. Použití createNativeQuery ke spojení dvou entit bez cizího klíče

  2. Jak snadno nasadit TimescaleDB

  3. Typ trojúhelníku v MySQL

  4. Proč je executemany v Pythonu MySQLdb pomalé?