En post anteriores vimos lo que son los parámetros IN y los parámetros OUT pero existe otro tipo de parámetro que es la combinación de ambos y es el parámetro INOUT.
Parámetros INOUT
El parámetro INOUT es un parámetro tanto de entrada como de salida. Esto significa que el programa que lo llama puede pasar el argumento, y el procedimiento almacenado puede modificar el parámetro INOUT y devolver el nuevo valor al programa que lo llama.
El ejemplo para este post consistirá en un procedimiento que use un parámetro INOUT para ingresar el ID de un empleado y según este exista o no, retornara en el mismo parámetro el nombre y cargo del empleado o un mensaje advirtiendo que el empleado buscado no existe. Un ejemplo trivial pero que sirve para apreciar como funciona este tipo de parámetro.
¿Que necesitamos?
Procedimiento almacenado
Valiendonos del asistente gráfico de phpmyadmin creamos el siguiente procedimiento:
donde:
Una vez creado el procedimiento, realizamos unas pruebas para comprobar que funciona como queremos.
INOUT en java
Ahora implementamos el código para llamar al procedimiento desde java:
import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Types; /** * @see https://www.jc-mouse.net/ * @author mouse */ public class Main { public static void main(String[] args) { Connection connection = conectar("jdbc:mariadb://localhost:3306/TutorialJava", "root", ""); if (connection != null) { try { System.out.println("> Se prepara llamada a procedimiento almacenado"); CallableStatement stmt = connection.prepareCall("{call obtenerEmpleado(?)}"); //ingresando parametro INOUT de tipo VARCHAR stmt.registerOutParameter(1, Types.VARCHAR); stmt.setString(1, "3"); System.out.println("> Ejecutando procedimiento"); stmt.execute(); System.out.println("> Ejecucion terminada"); //Se obtiene el valor devuelto por el procedimiento String valor = stmt.getString(1); System.out.println("\n Valor retornado: " + valor); } catch (SQLException ex) { System.err.println(ex.getMessage()); } } } public static Connection conectar(String url, String user, String pass) { try { Connection connection = DriverManager.getConnection(url, user, pass); System.out.println("> Conectado a la base de datos"); return connection; } catch (SQLException ex) { System.err.println(ex.getMessage()); } return null; } }
Y ejecutando obtenemos lo siguiente:
enjoy!
En este post crearemos una aplicación en Android Studio para conectarnos con nuestra base de datos de Firebase y leer al[...]
Cuando creamos reportes en iReport que son un poco complicadas o reportes personalizados, osea, tratando de evitar el cl[...]
SQLite es un sistema de gestión de bases de datos relacional, escrita en C, si se desea hacer uso de encriptación con S[...]
El laberinto del terror es un juego en el que haciendo uso del ratón y de tu pulso de borracho debes cruzar distintos la[...]
En este proyecto realizaremos una aplicación de base de datos Firebird con el lenguaje de programación de Visual Basic d[...]
En esta ocasión vemos un ejemplo sencillo de como usar Tile Map en nuestros juegos android con la librería LibGDX utiliz[...]