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

Procedimientos Almacenados: Parámetros IN

Autor jc mouse lunes, mayo 6, 2019

Una procedimiento almacenado es un conjunto de sentencias de SQL que se pueden almacenar en el servidor, de esta forma no es necesario volver a emitir las declaraciones individuales cada vez que las necesitemos, sino que pueden referirse a la rutina almacenada llamándola por su nombre.

Los procedimientos almacenados nos permiten utilizar 3 tipos de parámetros:

  • IN: Parámetros de entrada
  • OUT: Parámetros de salida
  • INOUT: Una combinación de las dos anteriores

En este post veremos un ejemplo de como crear un procedimiento almacenado con parámetros de entrada (IN) desde el administrador de base de datos phpMyAdmin, y finalmente veremos como llamar esta rutina desde código java.

Necesitamos:

  • XAMPP
  • Conocimientos sobre Java
  • Conocimientos sobre SQL
  • IDE Netbeans 8.x u otro IDE
  • Conector JDBC para MariaDB

Nivel: Intermedio-Avanzado

Paso 1. Base de datos

Crea una base de datos con el nombre de «tutorialjava«, a continuación agrega una tabla «empleado» y unos cuantos datos como se ve a continuación.

--
-- Estructura de tabla para la tabla `empleado`
--

CREATE TABLE `empleado` (
  `id` int(20) NOT NULL AUTO_INCREMENT PRIMARY KEY,
  `nombre` varchar(64) NOT NULL,
  `cargo` varchar(64) NOT NULL,
  `codcargo` varchar(6) NOT NULL,
  `salario` decimal(10,2) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Volcado de datos para la tabla `empleado`
--

INSERT INTO `empleado` (`id`, `nombre`, `cargo`, `codcargo`, `salario`) VALUES
(1, 'Alberto Carlos Huevos', 'Responsable de marketing', 'CMO', '3500.00'),
(2, 'Aitor Tilla', 'Director de Recursos Humanos', 'CHRO', '5000.00'),
(3, 'Estela Gartija', 'Responsable de marketing', 'CMO', '4200.00'),
(4, 'Mirella Baila Sola', 'Director Ejecutivo', 'CEO', '10000.00');

Paso 2. Crear el procedimiento almacenado con parámetros de entrada

Con el phpMyAdmin abierto y tu base de datos seleccionado, ve a la opción «rutinas» y presiona el link «agregar rutina»

rutina

En la ventana emergente que aparece, completamos los siguientes datos como se ve en la siguiente imagen.

procedimiento almacenado

1.- Le damos un nombre a nuestro procedimiento

2.- Seleccionamos PROCEDURE

3.- Indicamos los parámetros de entrada de la siguiente forma:

  • Dirección: Seleccionamos IN
  • Nombre: «codigo» para el código de cargo y «porcentaje» para indicar el valor en el cual se incrementara el salario
  • Tipo: Varchar para codigo e Int para porcentaje

4.- Ingresamos el SQL del procedimiento almacenado:

UPDATE empleado
SET salario = salario + salario * porcentaje/100
where codcargo=codigo

5.- Opcional. Si deseamos, podemos agregar una descripción al procedimiento almacenado

Para terminar, presionamos el botón [continuar]

El procedimiento se sitúa en el apartado de «rutinas» donde podremos cómodamente editarla, eliminar exportarla o ejecutarla.

phpmyadmin

De igual forma, en nuestro apartado de base de datos se añade una nueva opción donde podremos ver todas las rutinas que creemos al igual que se hace con las tablas.

Paso 3. Probando nuestro procedimiento almacenado

Para ejecutar el procedimiento almacenado, simplemente debemos presionar el botón «Ejecutar», a continuación completar los parámetros de entrada y presionar el botón [continuar]. Para este ejemplo, modificamos el salario para el Director Ejecutivo o CEO, el cual si recordamos, tenia un salario de 10000, incrementamos este en un 20%.

call procedure

Paso 4. Procedimiento almacenado desde java

Para realizar la llamada a un procedimiento almacenado con parámetros de entrada desde java, se realiza de la siguiente manera:

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
 * @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 {
                leer_empleados(connection);

                //Se prepara llamada a procedimiento
                System.out.println("> llamada a procedimiento almacenado");
                CallableStatement stmt = connection.prepareCall("{call ajustar_salario(?, ?)}");
                //ingresando parametros IN
                stmt.setString(1, "CMO");
                stmt.setDouble(2, 20);
                //llamando al procedimiento
                System.out.println("> Incremento de salario en 20%");
                stmt.execute();
                System.out.println("> llamada a procedimiento concluida");

                leer_empleados(connection);
            } 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;
    }

    /**
     * Metodo para leer la lista de empleados
     */
    public static void leer_empleados(Connection conn) throws SQLException {
        System.out.println("\n Lista de empleados");
        PreparedStatement stmt = conn.prepareStatement("SELECT * FROM empleado WHERE codcargo='CMO' ");
        ResultSet rs = stmt.executeQuery();
        while (rs.next()) {
            int id = rs.getInt("id");
            String nombre = rs.getString("nombre");
            String cargo = rs.getString("cargo");
            double salario = rs.getDouble("salario");
            System.out.printf("%s | %s | %s | %.2f\n", id, nombre, cargo, salario);
        }
        System.out.println();
    }

}

En el ejemplo anterior, se esta incrementando en un 20% el salario para los empleados con el cargo de «Responsable de marketing» con código CMO.

Donde ejecutando tenemos:

execute procedure

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

NBANDROID-V2 plugin para Netbeans

NBANDROID-V2 plugin para Netbeans

Cuando Android estaba en sus inicios, varios IDEs (Entorno de Desarrollo Integrado​​) se disputaban el dominio por su de...

Consultas con ADO.NET

Consultas con ADO.NET

ADO.NET proporciona un puente entre los objetos creados en VB o C#  y la base de datos MySQL asociada a la aplicación, a...

Métodos Numéricos: Sustitución Directa

Métodos Numéricos: Sustitución Directa

El Método de Sustitución Directa básicamente consiste en asumir un valor, reemplazar el mismo en la función despejada y...

BootChess – Ajedrez en 487 bytes

BootChess – Ajedrez en 487 bytes

Desde que se crearon los videojuegos para computadora, el espacio de almacenamiento y memoria han sido siempre un proble...

Pon a prueba tu código con Android Studio

Pon a prueba tu código con Android Studio

Realizar pruebas sobre nuestro código nos permiten comprobar su correcto funcionamiento e integración con otros módulos...

Añadir Splash Screen en Java/Netbeans

Añadir Splash Screen en Java/Netbeans

¿Splash Screen? El splash screen o traducido al aspañol 😉  es una «Pantalla de bienvenida» que se muestra cuando se ejec...

Comparte lo que sabes

Categorias

Últimas entradas

En este post te enseñamos a crear tus imagenes al estilo de Disney Pixar utilizando Inteligencia Artificial de una maner...

El archuivo helpers.php en Laravel contiene funciones globales de PHP los cuales se pueden utilizar en cualquier parte d...

El gigante tecnologico de Google ingresa a la competencia de los ChatBot con Inteligencia Artificial a traves de Bard. B...

uiverse.io es u sitio web para desarrolladores que contiene miles de elementos de interfaz de usuario HTML/CSS creados y...

Herramientas

Generador de Enlaces a Whatsapp