Come passare il parametro booleano alla procedura Oracle C #

Ho problemi a passare il parametro booleano alla mia procedura in Oracle. Ottengo l’errore

ORA-06550: line 1, column 7: PLS-00306: wrong number or types of arguments in call to 'LOG_ENTRY' ORA-06550: line 1, column 7: PL/SQL: Statement ignored" 

Procedura in Oracle:

 log_entry(p_rqserial in integer, p_orig in varchar, p_type in char, p_objname in varchar, p_info in varchar, p_text in varchar, p_with_commit boolean) 

Questo mio codice:

  cmd = new Oracle.DataAccess.Client.OracleCommand("Vbank_pkg.vb_log_entry", con); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add("p_rqserial", OracleDbType.Int32).Value = Log_Serial; cmd.Parameters.Add("p_orig", OracleDbType.Varchar2).Value = "\'" + p_orig + "\'"; cmd.Parameters.Add("p_type", OracleDbType.Char).Value = "\'" + p_type + "\'"; cmd.Parameters.Add("p_objname", OracleDbType.Varchar2).Value = "\'" + p_objname + "\'"; cmd.Parameters.Add("p_info", OracleDbType.Varchar2).Value = "\'" + p_info + "\'"; cmd.Parameters.Add("p_text", OracleDbType.Varchar2).Value = "\'" + p_text + "\'"; cmd.Parameters.Add("p_with_commit", OracleDbType.Char).Value =true; cmd.ExecuteNonQuery();//Here error 

Qualcuno sa come fare questo? Perché non riesco a trovare alcuna soluzione e molte persone dicono che non è ansible passare il parametro bool da C # a Oracle ma non posso credere che non ci sia modo.

Prova a utilizzare la proprietà BindByName di OracleCommand come true per forzare il provider di dati a associare questi parametri per nome e non solo per l’indice. Non è necessario passare il ' come parametri. È guidato con parametri in ado.net .

ODP.NET non supporta il tipo di dati Boolean. Basta usare 1 o 0 come valore char per mantenerlo.

Per esempio:

 cmd = new Oracle.DataAccess.Client.OracleCommand("Vbank_pkg.vb_log_entry", con); cmd.BindByName = true; cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add("p_rqserial", OracleDbType.Int32).Value = Log_Serial; cmd.Parameters.Add("p_orig", OracleDbType.Varchar2).Value = p_orig; cmd.Parameters.Add("p_type", OracleDbType.Char).Value = p_type; cmd.Parameters.Add("p_objname", OracleDbType.Varchar2).Value = p_objname; cmd.Parameters.Add("p_info", OracleDbType.Varchar2).Value = p_info; cmd.Parameters.Add("p_text", OracleDbType.Varchar2).Value = p_text; cmd.Parameters.Add("p_with_commit", OracleDbType.Char).Value = "1"; cmd.ExecuteNonQuery();