这个问题正在慢慢杀死我,我认为问题可能是日期和时间格式但不确定。
例外:
ORA-06550: line 1, column 7:
PLS-00307: too many declarations of 'ALTA_SOCIO' match this call
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
程序:
PROCEDURE alta_socio(
p_nickname IN VARCHAR2,
p_nombre IN VARCHAR2,
p_apellido IN VARCHAR2,
p_cod_tipo_documento IN VARCHAR2,
p_numero_documento IN NUMBER,
p_fecha_nacimiento IN DATE,
p_sexo IN VARCHAR2,
p_cod_categoria IN VARCHAR2,
p_numero_socio OUT NUMBER,
p_codigo_error OUT NUMBER);
PROCEDURE alta_socio(
p_nickname IN VARCHAR2,
p_nombre IN VARCHAR2,
p_apellido IN VARCHAR2,
p_cod_tipo_documento IN VARCHAR2,
p_numero_documento IN NUMBER,
p_fecha_nacimiento IN DATE,
p_sexo IN VARCHAR2,
p_cod_categoria IN VARCHAR2,
p_mail IN VARCHAR2 DEFAULT NULL,
p_telefono_particular IN VARCHAR2 DEFAULT NULL,
p_telefono_alternativo IN VARCHAR2 DEFAULT NULL,
p_cod_ocupacion IN VARCHAR2 DEFAULT NULL,
p_cod_profesion IN VARCHAR2 DEFAULT NULL,
p_cod_estado_civil IN VARCHAR2 DEFAULT NULL,
p_fecha_casamiento IN DATE DEFAULT NULL,
p_nombre_apellido_conyuge IN VARCHAR2 DEFAULT NULL,
p_cod_pais IN VARCHAR2 DEFAULT NULL,
p_cod_provincia IN VARCHAR2 DEFAULT NULL,
p_cod_localidad IN VARCHAR2 DEFAULT NULL,
p_calle IN VARCHAR2 DEFAULT NULL,
p_numero IN VARCHAR2 DEFAULT NULL,
p_piso IN VARCHAR2 DEFAULT NULL,
p_departamento IN VARCHAR2 DEFAULT NULL,
p_cp IN VARCHAR2 DEFAULT NULL,
p_cp_nuevo_formato IN VARCHAR2 DEFAULT NULL,
p_numero_socio OUT NUMBER,
p_codigo_error OUT NUMBER);
c#代码
int retornoNroSocio = (int)retorno.ObjetoGenerico;
//Agrego todos los parametros al comando
OracleParameter parameterNickname = new OracleParameter("p_nickname", OracleType.VarChar, 32767);
parameterNickname.Direction = ParameterDirection.Input;
parameterNickname.Value = nickname;
ora_cmd.Parameters.Add(parameterNickname);
OracleParameter parameterNombre = new OracleParameter("p_nombre", OracleType.VarChar, 32767);
parameterNombre.Direction = ParameterDirection.Input;
parameterNombre.Value = nombre;
ora_cmd.Parameters.Add(parameterNombre);
OracleParameter parameterApellido = new OracleParameter("p_apellido", OracleType.VarChar, 32767);
parameterApellido.Direction = ParameterDirection.Input;
parameterApellido.Value = apellido;
ora_cmd.Parameters.Add(parameterApellido);
OracleParameter parameterTipoDocumento = new OracleParameter("p_cod_tipo_documento", OracleType.VarChar, 32767);
parameterTipoDocumento.Direction = ParameterDirection.Input;
parameterTipoDocumento.Value = tipoDocumento;
ora_cmd.Parameters.Add(parameterTipoDocumento);
OracleParameter parameterNroDocumento = new OracleParameter("p_numero_documento", OracleType.Number);
parameterNroDocumento.Direction = ParameterDirection.Input;
parameterNroDocumento.Value = numeroDocumento;
ora_cmd.Parameters.Add(parameterNroDocumento);
string fecha1 = DateTime.Today.ToShortDateString();
DateTime fecha2 = DateTime.Today;
string fecha3 = fecha2.ToString("dd-MM-yyyy");
DateTime fecha4 = new DateTime(2012, 5, 7, 12, 23, 22, 0);
DateTime fecha5 = DateTime.ParseExact(fecha3, "dd-MM-yyyy", null);
OracleParameter parameterFechaNacimiento = new OracleParameter("p_fecha_nacimiento", OracleType.DateTime);
parameterFechaNacimiento.Direction = ParameterDirection.Input;
parameterFechaNacimiento.Value = fecha5;
//parameterFechaNacimiento.Value = fecha2.ToString("dd/MM/yyyy");
ora_cmd.Parameters.Add(parameterFechaNacimiento);
OracleParameter parameterSexo = new OracleParameter("p_sexo", OracleType.VarChar, 32767);
parameterSexo.Direction = ParameterDirection.Input;
parameterSexo.Value = sexo.ToString();
ora_cmd.Parameters.Add(parameterSexo);
OracleParameter parameterCodCategoria = new OracleParameter("p_cod_categoria", OracleType.VarChar, 32767);
parameterCodCategoria.Direction = ParameterDirection.Input;
parameterCodCategoria.Value = codCategoria;
ora_cmd.Parameters.Add(parameterCodCategoria);
//ora_cmd.Parameters.Add("p_numero_socio", OracleType.Number).Direction = ParameterDirection.Output;
// ora_cmd.Parameters.Add("p_codigo_error", OracleType.Number).Direction = ParameterDirection.Output;
OracleParameter resultNumeroSocio = new OracleParameter("p_numero_socio", OracleType.Number);
resultNumeroSocio.Direction = ParameterDirection.Output;
ora_cmd.Parameters.Add(resultNumeroSocio);
OracleParameter resultCodigoError = new OracleParameter("p_codigo_error", OracleType.Number);
resultCodigoError.Direction = ParameterDirection.Output;
ora_cmd.Parameters.Add(resultCodigoError);
//Ejecuto el comando
ora_cmd.ExecuteNonQuery();
我尝试了几种日期格式但没有成功,我不知道可能是什么。 非常感谢您提供的帮助,如果您需要更多我可以添加的帮助。
答案 0 :(得分:3)
我不认为这是日期格式 - Oracle无法区分您要调用哪个 alta_socio
过程,因为前8个参数是相同的,其余参数是可选的。
然而,传递日期的正确方式只是传递日期值而不是将其转换为字符串
OracleParameter parameterFechaNacimiento = new OracleParameter("p_fecha_nacimiento", OracleType.DateTime);
parameterFechaNacimiento.Direction = ParameterDirection.Input;
parameterFechaNacimiento.Value = fecha5; // use the native DateTime type
ora_cmd.Parameters.Add(parameterFechaNacimiento);