Foros del Web » Programación para mayores de 30 ;) » Java »

Llamar stored procedures con datos tipo date

Estas en el tema de Llamar stored procedures con datos tipo date en el foro de Java en Foros del Web. Hola a todos, ojala alguien me pueda ayudar. Necesito urgente llamar a un stored procedure, donde uno de los datos de tipo IN OUT es ...
  #1 (permalink)  
Antiguo 14/03/2007, 08:16
 
Fecha de Ingreso: marzo-2007
Mensajes: 8
Antigüedad: 17 años, 2 meses
Puntos: 0
Llamar stored procedures con datos tipo date

Hola a todos, ojala alguien me pueda ayudar.
Necesito urgente llamar a un stored procedure, donde uno de los datos de tipo IN OUT es de tipo Date y tengo que enviarlo vacio o sea como NULL, haga lo que haga no me acepta datos vacios parA variables tipo date. tengo esto:

ct.setDate(11,AQUI DEBERIA ESTAR EN NULL); //11 FECHAHORA_PROCESO IN OUT DATE,
ct.registerOutParameter(11, Types.DATE);

Que debería poner para envia al campo Date como Null??
Por favor requiero ayuda urgente.
Gracias, chau chau
  #2 (permalink)  
Antiguo 14/03/2007, 08:51
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 7 meses
Puntos: 51
Re: Llamar stored procedures con datos tipo date

Si la definicion del procedimiento en PLSQ es esa: "FECHAHORA_PROCESO IN OUT DATE" no puedes pasarle un null por que está definido para que no puedas pasarle un null. O sea, no se puede.
  #3 (permalink)  
Antiguo 14/03/2007, 09:34
 
Fecha de Ingreso: marzo-2007
Mensajes: 8
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Llamar stored procedures con datos tipo date

Muchas gracias, solucione eso, pero me sigue dando error de: SQLException Invalid column index.
El codigo de mi programa es el siguiente:

************************************************** *************
public class OracleConn {

public static void main(String args[]){
try{
OracleConn oc = new OracleConn();
Connection conn = oc.getConnection();

//Declarar variables IN OUT

String codigo_unico_bme = "";
String tipo_fondo = "BSP";
int cuenta = 84188;
int subcta = 1;
//Date fechahora_proceso = null;
String moneda_deposito = "USD";
int valor_deposito = 1000;

CallableStatement ct = conn.prepareCall("{call fon.pck_mt3.db_mt3_deptran(?,?,?,?,?,?,?,?,?,?,?,? ,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}");

ct.registerOutParameter(1, Types.VARCHAR);
ct.setString(1, codigo_unico_bme);

ct.setString(2,"");
ct.setString(3,"LPZ");
ct.setString(4,"");
ct.setString(5,"9999");
ct.setString(6,""); /

ct.registerOutParameter(7, Types.VARCHAR);
ct.setString(7,tipo_fondo);
ct.registerOutParameter(8, Types.INTEGER);
ct.setInt(8,cuenta);
ct.registerOutParameter(9, Types.INTEGER);
ct.setInt(9,subcta);

//ct.setDate(10,new Date(System.currentTimeMillis()));
ct.setDate(10,null);
ct.setDate(11,null);
ct.registerOutParameter(11, Types.DATE);
ct.registerOutParameter(12, Types.VARCHAR);
ct.setString(12, moneda_deposito);
ct.registerOutParameter(13, Types.INTEGER);
ct.setInt(13,valor_deposito);
ct.setString(14,"DEP");
ct.setString(15,"");
ct.setString(16,"");
ct.setString(17,"");
ct.setString(18,"");
ct.registerOutParameter(19, Types.INTEGER);
ct.registerOutParameter(20, Types.VARCHAR);
ct.registerOutParameter(21, Types.DATE);
ct.registerOutParameter(22, Types.VARCHAR);
ct.registerOutParameter(23, Types.VARCHAR);
ct.registerOutParameter(24, Types.VARCHAR);
ct.registerOutParameter(25, Types.INTEGER);
ct.registerOutParameter(26, Types.INTEGER);
ct.registerOutParameter(27, Types.INTEGER);
ct.registerOutParameter(28, Types.INTEGER);
ct.registerOutParameter(29, Types.INTEGER);
ct.registerOutParameter(30, Types.VARCHAR);
ct.registerOutParameter(31, Types.VARCHAR);
ct.registerOutParameter(32, Types.INTEGER);
ct.setString(33,"");

boolean estado = ct.execute();

if (estado) {
System.out.println("EXITO");
} else {
System.out.println("NOOOOO!!");

}

System.out.println("Codigo error: "+ct.getString(10));
System.out.println("Mensaje: "+ct.getString(11));

ct.close();
conn.close();
} catch (Exception e){
System.out.println("Error:"+e.getMessage());
e.printStackTrace();
}
}
}
************************************************** *************

Y me sale estos errores:

************************************************** *************
NOOOOO!!
Error:Índice de columna no válido
java.sql.SQLException: Índice de columna no válido
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBE rror.java:134)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBE rror.java:179)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBE rror.java:269)
at oracle.jdbc.driver.OracleStatement.prepare_for_new _get(OracleStatement.java:3491)
at oracle.jdbc.driver.OracleStatement.getStringValue( OracleStatement.java:3728)
at oracle.jdbc.driver.OracleCallableStatement.getStri ng(OracleCallableStatement.java:493)
at com.oracle.conn.OracleConn.main(OracleConn.java:14 4)
************************************************** *************

Tienes alguna idea quepuede ser?
Por favor si pudieras ayudarme te agradeceria mucho, saludos chau chau
  #4 (permalink)  
Antiguo 14/03/2007, 10:30
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 7 meses
Puntos: 51
Re: Llamar stored procedures con datos tipo date

¿En las columnas 10 y 11 haces un setDate pero luego haces un getString?
  #5 (permalink)  
Antiguo 14/03/2007, 10:52
 
Fecha de Ingreso: marzo-2007
Mensajes: 8
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Llamar stored procedures con datos tipo date

Toda la razon, mil gracias, estaba como getString por q estaba probando y no me di cuenta, sin embargo aun me sale: NOOOO! es decir entra al else como si no hubiese podido ejecutar el sp a pesar de que ya probando en el system.out.println("Mensaje: "+ct.getString(7)); me sale el campo correcto, por q sera???
Sea como sea muchas gracias!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:50.