Hola, buenas tardes. Tengo un error cuando estoy ejecutando desde .NET una funcion de Oracle utilizando la libreria de Oracle.DataAccess.
¿Estoy haciendo algo mal? No me doy cuenta que error estoy cometiendo :S
El error es el siguiente
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
ORA-06512: at line 1
El encabezado de la funcion es este
FUNCTION ENCRIPTARPWD(vcPWD IN VARCHAR2
, vnError OUT NUMBER) RETURN VARCHAR2;
El codigo con el cual estoy queriendo ejecutar desde .NET es el siguiente
public static string EncryptPwd(string password)
{
Database db = DatabaseFactory.CreateDatabase("pps");
OracleConnection oraConn = new OracleConnection();
oraConn.ConnectionString = db.ConnectionString;
oraConn.Open();
OracleCommand cmd = oraConn.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "pas_ccc_enc.encriptarpwd";
cmd.Parameters.Add("vcPWD", OracleDbType.Varchar2,4000, password, ParameterDirection.Input);
cmd.Parameters.Add("vnError", OracleDbType.Int32);
cmd.Parameters["vnerror"].Direction = ParameterDirection.Output;
cmd.Parameters.Add("P_RV", OracleDbType.Varchar2);
cmd.Parameters["P_RV"].Direction = ParameterDirection.ReturnValue;
try
{
cmd.ExecuteNonQuery();
int pError = int.Parse(cmd.Parameters["pn_error"].Value.ToString());
if (pError != 0)
{
string pErrorMsg = cmd.Parameters["pc_errmsg"].Value.ToString();
throw new Exception(String.Format("Error : {0}. {1}", pError, pErrorMsg));
}
return cmd.Parameters["vRes"].Value.ToString();
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
Desde ya les agradezco
Saludos.-