jueves, 5 de noviembre de 2015

PLS-00306: wrong number or types of arguments in call to

PLS-00306: wrong number or types of arguments in call to procedure


Este error me estaba ocurriendo desde mi aplicación web en c# y mvc: "PLS-00306: wrong number or types of arguments in call to" procedure.

Despúes de verificar todos los nombres y tipos de parámetros en la firma del stored, me puse a revisar el código de mi aplicación web.

El error se produjo porqué estaba usando un nombre de parámetro incorrecto desde mi aplicación web c#:


cmdToExecute.Parameters.Add("p_personaid", OracleType.Number);
cmdToExecute.Parameters["p_personaid"].Direction = System.Data.ParameterDirection.Output;


Sé que no tiene sentido en este contexto pero ese parámetro "p_personaid"  no existía en la firma del stored procedure por lo que sólo tuve que corregir el nombre del parámetro.
 
Esto me sucedió por haber hecho un copy paste del código.

Espero les sirva. 

miércoles, 4 de noviembre de 2015

PLS-00703: multiple instances of named argument

Error PLS-00703: multiple instances of named argument


Trabajando con mi aplicación web en c#, me encontré este error PLS-00703: multiple instances of named argument al estar haciendo pruebas.

Estoy utilizando un stored procedure de Oracle el cual llamo desde mi aplicación con diversos parámetros.

Este error "PLS-00703: multiple instances of named argument" se produce cuando estás enviando un parámetro dos veces desde tu código.

En mi caso, este era mi error:

 cmdToExecute.Parameters.Add("p_lugardetrabajo", OracleType.VarChar).Value = _lugardetrabajo;
 cmdToExecute.Parameters.Add("p_direcciondetrabajo", OracleType.VarChar).Value = _direcciondetrabajo;
 cmdToExecute.Parameters.Add("p_cedulapno", OracleType.VarChar).Value = _cedulapno;
 cmdToExecute.Parameters.Add("p_horariosdeatencion", OracleType.VarChar).Value = _horariosdeatencion;
 cmdToExecute.Parameters.Add("p_cedulapno", OracleType.VarChar).Value = _cedulapno;
 cmdToExecute.Parameters.Add("p_email", OracleType.VarChar).Value = _email;
 cmdToExecute.Parameters.Add("p_paginaweburl", OracleType.VarChar).Value = _paginaweburl;     


Como ven estaba mandando el mismo parámetro dos veces.

Sólo tuve que remover uno de los dos y el programa funcionó correctamente.

Espero les sirva.