2014-03-19 4 views
1

에서 프로 시저를 호출하는 중이 호출이 일치합니다.이 문제는 천천히 나를 괴롭 히고 있습니다. 문제는 날짜와 시간 형식에있을 수 있지만 확실하지 않을 수 있습니다.'ALTA_SOCIO'선언이 너무 많아서 C#

예외 :

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(); 

내가 몇 가지 다 시도 내가 성공할 수 없다는 것을 알지 못한다. 추가 할 수있는 것이 더 필요하면 저에게 줄 수있는 도움을 주셔서 대단히 감사합니다.

답변

3

날짜 형식이라고 생각하지 않습니다. 오라클은 을 프로 시저로 구별 할 수 없습니다. 처음 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); 
+0

나는 문제가 그 만 덕분 확인 –

관련 문제