Páginas

Mostrando entradas con la etiqueta JDBC. Mostrar todas las entradas
Mostrando entradas con la etiqueta JDBC. Mostrar todas las entradas

16/6/15

CallableStatement con parámetros IN/OUT desde java.

CallableStatement con parámetros IN/OUT desde java.

Como ejecutar una consulta a Oracle PL/SQL con un parámetro IN/OUT desde CallableStatement Java.




Cuando trabajamos en Java con una base de datos Oracle PL/SQL sabemos que siempre en el DAO hacemos la llamada a un Strored Procedure y dependiendo de sus parámetros pasamos el valor correcto. Suponiendo que el Stored Procedure sea declarado en Oracle de esta manera:
  PROCEDURE SP_BUSCAR_USUARIO(NUMERO_DOCUMENTO IN NUMBER,
                              CODIGO_MENSAJE   OUT NUMBER,
                              MENSAJE          OUT VARCHAR2);
  
Ya sabemos que este SP tiene parámetros de entrada (IN) y de salida (OUT), para ejecutar este SP desde Java tenemos que hacer esto:
  CallableStatement callableStatement = null;
  Connection connection = null;
  ResultSet resultSet = null;

  String mensajeDevuelto = "";
  int codigoMensaje = 0;
  String sql = "{ CALL  PAQUETE_DATO_JAVA.SP_BUSCAR_USUARIO(?,?,?) }";
  try {
   connection = Control.getConnection();

   callableStatement = connection.prepareCall(sql.toString());
   callableStatement.setInt(1, numeroDocumento);
   callableStatement.registerOutParameter(2, OracleTypes.INTEGER);
   callableStatement.registerOutParameter(3, OracleTypes.VARCHAR);
   
   callableStatement.execute();
   
   codigoMensaje = callableStatement.getInt(2);
   mensaje = callableStatement.getString(3);

   //......
  
Como vemos anteriormente cuando un SP recibe parámetros de entrada (IN) en Java nosotros seteamos el parámetro en el CallableStatement, y si el SP recibe parámetros de salida (OUT) nosotros en Java registramos el tipo de parámetro de salida en el CallableStatement y después procedemos a insertarlo en una variable. Ahora lo que puede enredarnos es como hacer cuando un SP recibe un parámetro de entrada y salida (IN OUT), es sencillo eso lo hacemos así, suponiendo que esta sea la declaración del SP:
  PROCEDURE SP_BUSCAR_USUARIO(NUMERO_DOCUMENTO IN NUMBER,
                              CODIGO_MENSAJE   IN OUT NUMBER,
                              MENSAJE          OUT VARCHAR2);
  
Así lo ejecutamos desde Java:
  CallableStatement callableStatement = null;
  Connection connection = null;
  ResultSet resultSet = null;

  String mensajeDevuelto = "";
  int codigoMensaje = 0;
  String sql = "{ CALL  PAQUETE_DATO_JAVA.SP_BUSCAR_USUARIO(?,?,?) }";
  try {
   connection = Control.getConnection();

   callableStatement = connection.prepareCall(sql.toString());
   callableStatement.setInt(1, numeroDocumento);
   callableStatement.setInt(2, codigoMensaje);
   callableStatement.registerOutParameter(2, OracleTypes.INTEGER);
   callableStatement.registerOutParameter(3, OracleTypes.VARCHAR);
   
   callableStatement.execute();
   
   codigoMensaje = callableStatement.getInt(2);
   mensaje = callableStatement.getString(3);

   //......
  
Para que eso funcione primero tenemos que setear en el parámetro de entrada en el CallableStatement y después registrar el tipo de parámetro de salida en el mismo índice. Suerte, espero te sirva este Dato Java.

6/6/14

JDBC Java y PL-SQL

JDBC Java con Oracle

Oracle JDBC



Java Database Connectivity es la API que permite que nosotros desde Java podamos hacer operaciones en la base de datos. Imagino que si tu estas leyendo este post en este momento ya sabes de qué se trata JDBC, sino puedes googlear un poco, mediante esta API nos podemos conectar y hacer operaciones a cualquier base de datos, en esta entrada les voy a enseñar cómo hacer la conexión Java a PL-SQL. Hay varias maneras de hacer la conexión con la base de datos, en este post explicare como hacerlo para aplicaciones de escritorio.