Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Java / Procedimientos Almacenados: Parámetros INOUT

Procedimientos Almacenados: Parámetros INOUT

Autor jc mouse martes, mayo 14, 2019

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?

  • Utilizamos la misma base de datos de los post anteriores
  • XAMPP o similares
  • Netbeans o Eclipse
  • Conector JDBC MariaDB

Procedimiento almacenado

Valiendonos del asistente gráfico de phpmyadmin creamos el siguiente procedimiento:

store procedure

donde:

  1. Nombre de rutina: obtenerEmpleado
  2. Tipo: PROCEDURE
  3. Tipo: INOUT
  4. Nombre para el parametro: valor
  5. Tipo y longitud: VARCHAR(64)
  6. SQL

Una vez creado el procedimiento, realizamos unas pruebas para comprobar que funciona como queremos.

resultados rutina

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:

INOUT java ejemplo

enjoy!

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

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! :)

También Te Podría Interesar

Impresión de Interfaz Gráfica de Usuario

Impresión de Interfaz Gráfica de Usuario

En este post veremos como imprimir secciones de un formulario en java implementando la Interface Printable. La clase que...

Esteganografia LSB en Java – [Proyecto Completo]

Esteganografia LSB en Java – [Proyecto Completo]

Mensajes ocultos utilizando el método de Inserción en el bit menos significativo (Least Significant Bit Insertion) El mé...

Configurar JavaBeans como DataSource en iReports

Configurar JavaBeans como DataSource en iReports

Los JavaBeans son clases que encapsulan objetos en un solo objeto (beans). Son fáciles de crear y pueden contener muchos...

Software Libre: Decompilador Java

Software Libre: Decompilador Java

El proyecto «Java Decompiler» tiene como objetivo desarrollar herramientas para descompilar y analizar byte code de  jav...

Simplifica tu código

Simplifica tu código

Project Lombok es una biblioteca para java que se conecta con su IDE (Integrated Development Environment – Entorno...

Introducción a la internacionalización de aplicaciones

Introducción a la internacionalización de aplicaciones

La internacionalización permite a las aplicaciones adaptarse a los diferentes idiomas y regiones sin necesidad de cambio...

Comparte lo que sabes

Categorias

Últimas entradas

simuladorasamblea.bo es una herramienta digital  desarrollado por los Analistas de Datos Rafael López Valverde y  Sergio...

Crecen las startups en Bolivia: La mayoría está en Santa Cruz, Cochabamba y La Paz Según el «Mapeo del Ecosistema de Tec...

«Las palabras que elegimos dan forma a nuestra realidad. La Fuente Educada (Polite Type) es una fuente de código abierto...

En este post realizaremos un proyecto en VUE que se conectara a un REST API  y utilizara un servicio del mismo para obte...

Herramientas

Generador de Enlaces a Whatsapp