Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

System.Data.OracleClient.OracleException:ORA-01036:nome/número de variável ilegal


Eu acho que seu problema é gerado pelo uso de um enum inválido em suas chamadas de métodos Add

Se você executar esse código, poderá notar que o OracleType para Int32 não é o mesmo de 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

Portanto, sugiro usar a enumeração correta para seu provedor ADO.NET.

É interessante notar que chamar Add com SqlDbType em vez de OracleType é aceito e não gera um erro de tempo do compilador. Isso acontece porque o método Add possui uma sobrecarga que aceita um objeto como segundo parâmetro (é usado para passar diretamente um valor ao construir o parâmetro).

Uma alternativa é usar AddWithValue do OracleParameterCollection
   command.Parameters.AddWithValue("@course_Id", course_Id);
   command.Parameters.AddWithValue("@question", question);
   command.Parameters.AddWithValue("@posterName", posterName);
   command.Parameters.AddWithValue("@blogdate", blog_date);