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!
Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.
Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye
Enjoy! :)
El JTable de Java es un gran componente para mostrar datos en una tabla de una forma rápida y sencilla, sin embargo en v...
En este post te hablaremos sobre una interesante herramienta para le lectura y edición de metadatos que no te debe de fa...
El CRC o Verificación de Redundancia Cíclica o Comprobación de redundancia cíclica es una técnica utilizada para detect...
Necesitamos: Android Studio 2 tipos de fuente TTF Agregar Archivo de fuente al proyecto Paso 1: Crear carpeta assets Cli...
El patrón de desbloqueo es una medida de seguridad que tienen algunos teléfonos inteligentes para evitar el acceso al di...
Notación matemática formada por una tabla cuadrada de números, u otros elementos, entre dos líneas verticales; el valor...
Si trabajas con redes sociales (RRSS) a continuación te muestro tres herramintas gratuitas que te ayudaran a la hora de...
Por lo general se usan transacciones a nivel base de datos y posteriormente se llaman estos a través de procedimientos a...
En este post, aprenderemos como conectar Visual Basic 6 con SQL Server, abrir una tabla, leer su contenido y mostrar est...
Lo que veremos en este post es la configuración del driver para PHP de SQL Server que ha creado Microsoft el cual permit...