Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/04/2010, 12:52
josemasuarez
 
Fecha de Ingreso: abril-2010
Ubicación: Buenos Aires
Mensajes: 1
Antigüedad: 14 años
Puntos: 0
Error al ejecutar funcion Oracle

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.-