GUIA DE PROCEDIMIENTOS Y FUNCIONES ALMACENADOS EN MYSQL



Documentos relacionados
Capítulo 8. Construcción de guiones

Los procedimientos almacenados son nuevas funcionalidades de la versión de MySQL 5.0. Un procedimiento

PROCEDIMIENTOS ALMACENADOS

TRIGGER LEONEL CADOSO ROMERO 1

1. Se usará la Base de Datos llamada. 2. Borrar la tabla CtasBanc anterior y crearla: 5.1 Procedimientos y Funciones Almacenados SQL Server

GUIA DE TRIGGERS (Disparadores) EN MYSQL

Unidad 6. Procedimientos Almacenados y Disparadores

Procedimientos Almacenados (PA) en MySql

Bases de Datos Ejercicio Número 2 Bogotá, Diciembre 5 de 2013

Utilizar la cláusula RETURNS es obligatorio al momento de definir una función y sirve para especificar el tipo de dato que será devuelto.

GUÍA DE TRABAJO N 5 GRADO 11 Programación y Diseño de Articulación SENA Software Ing. Néstor Raúl Suarez Perpiñan Página 1 de 6

Tema 7. Triggers, procedimientos y funciones en MySQL JOSÉ JUAN SÁNCHEZ HERNÁNDEZ

GUÍA DE TRABAJO N 7 GRADO 11. Ing. Néstor Raúl Suarez Perpiñan Página 1 de 6 GUIA N 7 COMANDOS MYSQL II. CREAR UNA TABLA

Modelo de base de datos única con múltiples geobases de datos. Modelo de múltiples bases de datos espaciales

Tablas -SQL Curso Bases de Datos. Por Elizabeth León Guzmán, Ph.D. Profesora Ingeniería de Sistemas Grupo de Investigación MIDAS

5.1 Procedimientos y Funciones Almacenados. 5.2 Disparadores (Triggers).

Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos. Triggers

Introducción a Transact-SQL

Gestión de Usuarios en MySQL

Columnas calculadas (operadores aritméticos y de concatenación)

MySQL: Vistas y Rutinas Almacenadas. Bases de Datos

Bases de Datos 2: Procedimientos Almacenados, Funciones y Triggers. Tecnólogo en Informática, sede Paysandú Bases de Datos 2

Base de Datos. Docente: Ing. Francisco Rodríguez BASE DATOS. Resultados. Internet. Requerimientos

Gestión de Usuarios en MySQL

LENGUAJE ESTRUCTURADO DE CONSULTAS SQL (2)

Tema 5. DML (Parte II)

INTRODUCCIÓN A LAS BASES DE DATOS. L.I Gerardo Benavides Pérez

TEMA 6: LENGUAJE DE DEFINICIÓN DE DATOS (LDD)

GUIA 3 PARTE II. Introducción a PL/SQL

SQL Sintaxis. Ejemplo de Alumno, Curso, Profesor. Esquemas de Alumno, Curso, Profesor. Andrés Moreno S.

//Sección de manejo de excepciones. Las rutinas de manejo de errores //aparecen aqui

Laboratorio de Programación III

Para procesar instrucciones SELECT que devuelvan más de una fila, son necesarios cursores explicitos combinados con un estructura de bloque.

SQL Sintaxis. OpenOffice. Ejemplo de Alumno, Curso, Profesor. Ejemplo de Alumno, Curso, Profesor. Andrés Moreno S. Nombre. Apellido. RutAlumno.

Tutorial MySql - 1 -

Diseño de bases de datos

Triggers 24/12/2016. Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos. Triggers en Oracle

GUÍA DE TRABAJO N 9 - LENGUAJES C# + SQL Educación Media Fortalecida Programación de Software GRADO 11 Ing. Néstor Raúl Suarez Perpiñan Página 1 de 8

- 1 - Mg. Abril Saire Peralta

Para crear una función o un procedimiento se deben usar las instrucciones CREATE FUNCTION o CREATE PROCEDURE.

Triggers 27/11/2014. Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos. Triggers en Oracle

Procedimientos almacenados en PL/SQL. Jonathan Medina Gómez Facultad de Ingeniería Universidad de Antioquia

SQL. (...la guía básica de supervivencia de dmi) Universidad de los Andes Demián Gutierrez Enero

Curso 1º SMR Módulo: AO Actividades 3 Bases de datos:creamos Tablas mediante SQL

Repaso. Laboratorio Informix. Stored Procedures. Ejemplo. Creación de stored procedures. Sql en un Procedimiento

Un proyecto de IBM llamado Sistem/R construye un prototipo simple llamado SQUARE que después se transformó en SQL.

Laboratorio Informix. Stored Procedures Triggers

Manual de Instalación y Configuración

Programación con acceso a base de datos

Implementación de funciones definidas por el usuario

ORACLE 10g. Descripción A QUIEN VA DIRIGIDO?

Tipos de datos en SQL. SQL. DDL (Data Definition Language) CREATE DOMAIN CREATE TABLE CREATE TABLE. CREATE TABLE con restricciones de atributo

Conceptos de Bases de Datos Relacionales Triggers

EJEMPLO DE CÓDIGO JAVA BÁSICO. CREAR CLASES CON CAMPOS, CONSTRUCTOR Y MÉTODOS. LA PALABRA CLAVE THIS (CU00652B)

Diseña y Administra Bases de Datos Guía de Estudio

Técnicas para la enseñanza de. Desarrollo Web. PH P - m ysqli. Liliana Gutiérrez Flores. Enero de 2016

Cursores, Triggers, Indices, Transacciones, Vistas Gestión y Modelación de Datos

Jair Ospino Ardila -- Guía Sencilla

Una tabla está en 5ta. Forma normal (5FN) o Forma Normal de Proyección-unión si está en 4FN y las únicas dependencias que existen son las

MANUAL BÁSICO DE MYSQL

Consideremos el siguiente ejemplo que crea y se inserta en las tablas que definen la identidad basada en la clave principal como un índice agrupado:

Características del lenguaje SQL

Oracle Database 11g: Programación con PL/SQL Nuevo

Diseño de bases de datos

Implementación de procedimientos almacenados

DESARROLLO SISTEMAS INFORMATICOS WEB 1 (DSIW1) ING. TOMAS URBINA. Funciones en MySql

Examen de Ficheros y bases de datos Convocatoria de junio II PARCIAL

PROGRAMA ACADÉMICO DE TECNOLOGÍAS DE LA INFORMACIÓN. actividad Transacciones en MySQL. como requerimiento parcial para acreditar la asignatura de

Recuperación del Sistema

BASES DE DATOS AVANZADAS Transacciones en MYSQL

TEMA 8. CONSTRUCCIÓN DE GUIONES DE ADMINISTRACIÓN

Introducción a SQL (DDL)

Transacciones en SQL Server Autor: Cesar Manivesa (manivesa)

Formatos para prácticas de laboratorio

Proyecto 2 Base de Datos SQL Server y MySQL

PHP. Tipos de campo en MySql char(longitud): Cualquier carácter. El campo tendrá siempre la misma longitud. Máximo de 255 caracteres.

PL/SQL avanzado: Secuencias, triggers, cursores y subprogramas

Modulo 11. Clases y Objetos en Java

MySQL por línea de comandos

Procedimientos Almacenados

Triggers en PL/SQL. Jonathan Medina Gómez Facultad de Ingeniería Universidad de Antioquia

SQL: Vistas, Triggers, y Procedimientos Almacenados

Forma Básica Clase Java

UNIVERSIDAD DON BOSCO

PL/SQL. Programming Language Structured Query Language

Está basado en el álgebra y en el cálculo relacional.

Creando CRUD en PHP: operaciones básicas para la gestión de bases de datos

APUNTES: APLICACIONES WEB BASADAS EN PHP Y MYSQL Página 1 de 5

Tema: DISPARADORES (TRIGGERS)

Oracle Database 10g: Conceptos Básicos de SQL y PL/SQL

Tarea del 12 de enero de Tarea del 19 de enero de Crear su página web. Por ejemplo, en jimdo.com

Integración script de servidor con los sistemas gestores de base de datos

Procedimientos Almacenados Activadores (triggers) Curso Bases de Datos

SUBPROGRAMAS PL/SQL César Martínez C. Profesor Instructor de Base de Datos Sede Puente Alto DUOC

Examen de Programación Concurrente - Clave: a Junio 2008 Departamento de Lenguajes, Sistemas Informáticos e Ingeniería del Software.

En esta clase crearemos los métodos que nos permitan establecer la comunicación, llevar información y buscar en la base de datos.

Proyecto 1 BASE DE DATOS SQL Server y MySQL

Transcripción:

GUIA DE PROCEDIMIENTOS Y FUNCIONES ALMACENADOS EN MYSQL Conceptos, historia y contexto http://dev.mysql.com/doc/refman/5.0/es/stored-procedures.html Los procedimientos almacenados y funciones son nuevas funcionalidades de la versión de MySQL 5.0. Un procedimiento almacenado es un conjunto de comandos SQL que pueden almacenarse en el servidor. Una vez que se hace, los clientes no necesitan relanzar los comandos individuales pero pueden en su lugar referirse al procedimiento almacenado. Algunas situaciones en que los procedimientos almacenados pueden ser particularmente útiles: Cuando múltiples aplicaciones cliente se escriben en distintos lenguajes o funcionan en distintas plataformas, pero necesitan realizar la misma operación en la base de datos. Cuando la seguridad es muy importante. Los bancos, por ejemplo, usan procedimientos almacenados para todas las operaciones comunes. Esto proporciona un entorno seguro y consistente, y los procedimientos pueden asegurar que cada operación se loguea apropiadamente. En tal entorno, las aplicaciones y los usuarios no obtendrían ningún acceso directo a las tablas de la base de datos, sólo pueden ejecutar algunos procedimientos almacenados. Los procedimientos almacenados pueden mejorar el rendimiento ya que se necesita enviar menos información entre el servidor y el cliente. El intercambio que hay es que aumenta la carga del servidor de la base de datos ya que la mayoría del trabajo se realiza en la parte del servidor y no en el cliente. Considere esto, si muchas máquinas cliente (como servidores Web) se sirven a sólo uno o pocos servidores de bases de datos. Los procedimientos almacenados le permiten tener bibliotecas o funciones en el servidor de base de datos. Esta característica es compartida por los lenguajes de programación modernos que permiten este diseño interno, por ejemplo, usando clases. Usando estas características del lenguaje de programación cliente es beneficioso para el programador incluso fuera del entorno de la base de datos. Los procedimientos almacenados requieren la tabla proc en la base de datos mysql. Esta tabla se crea durante la instalación de MySQL 5.0. Si está actualizando a MySQL 5.0 desde una versión anterior, asegúrese de actualizar sus tablas de permisos para asegurar que la tabla proc existe. Definición general de procedimientos y funciones en mysql CREATE PROCEDURE sp_name ([parameter[,...]]) [characteristic...] routine_body CREATE FUNCTION sp_name ([parameter[,...]]) RETURNS type [characteristic...] routine_body parameter: [ IN OUT INOUT ] param_name type type: Any valid MySQL data type characteristic: LANGUAGE SQL [NOT] DETERMINISTIC { CONTAINS SQL NO SQL READS SQL DATA MODIFIES SQL DATA } SQL SECURITY {DEFINER INVOKER} COMMENT 'string' routine_body: procedimientos almacenados o comandos SQL válidos La lista de parámetros entre paréntesis debe estar siempre presente. Si no hay parámetros, se debe usar una lista de parámetros vacía (). Cada parámetro es un parámetro IN por defecto. Para especificar otro tipo de parámetro, use la palabra clave OUT o INOUT antes del nombre del parámetro. Especificando IN, OUT, o INOUT sólo es válido para una PROCEDURE.

EJEMPLO DE DEFINICIÓN (CREACIÓN, ELIMINACIÓN Y USO) DE UN PROCEDIMIENTO CON PARÁMETROS DE ENTRADA CREACION DE UN PROCEDIMEINTO EN GENERAL CREATE PROCEDURE procedure1 /* nombre */ (IN parameter1 INTEGER) /* parametros */ /*inicio del la programación*/ DECLARE variable1 CHAR(10); /* Declarar variables */ IF parameter1 = 17 THEN /* uso del IF */ SET variable1 = 'grande'; /* asignacion */ ELSE SET variable1 = 'pequeño'; /* asignacion */ END IF; /* fin del IF */ INSERT INTO table1 VALUES (variable1); /* sentencia SQL */ END /* fin del la programación */ El anterior procedimiento consiste en guardar en una tabla información dependiendo del valor del parámetro. Adaptaremos el ejemplo: supongamos que en una tabla llamada dimensión que tiene dos atributos, se pretende que dado un atributo, se inserte información en la tabla generando el segundo atributo. Para probar el ejemplo en mysql, debemos crear una base de datos y la tabla de ejemplo dimensión con dos atributos así: Create database prueba; Use prueba; Create table dimension ( Altura int not null, tamano varchar(15) not null ); Creamos el procedimiento así: DELIMITER $$ CREATE PROCEDURE Decidirdimension (IN altura INTEGER) /*Este parámetro es de entrada*/ DECLARE variable1 CHAR(15); IF altura >10 THEN SET variable1 = 'grande'; ELSE IF altura >5 THEN SET variable1 = 'mediano'; ELSE SET variable1 = 'pequeno'; END IF;

END IF; INSERT INTO dimension VALUES (altura, variable1); END $$ DELIMITER ; Porque es importante el uso del DELIMITER: por defecto mysql usa como DELIMITER el punto y coma (;), es decir, cada vez que encuentre punto y como(;) ejecuta hasta ahí, debido a que los procedimientos y funciones son varias líneas de códigos y algunas de ellas terminan con este delimiter se ejecutaría solo hasta ahí, lo que ocasionaría un error, es por esto que se hace necesario indicarle a mysql que utilice otro DELIMITER que puede ser cualquiera para el ejemplo usamos $$ y al finalizar la creación del procedimiento o función volvemos a cambiarlo por ; USAR O LLAMAR UN PROCEDIMEINTO Para llamar un procedimiento se utiliza el comando CALL así: CALL nombre_de_procedimiento(parametros); Para el ejemplo seria así: CALL Decidirdimension(5); CALL Decidirdimension(8); CALL Decidirdimension(25); Verificamos si el procedimiento se hizo adecuadamente: SELECT * FROM dimension; Qué está haciendo el procedimiento Decidirdimension? ELIMINAR UN PROCEDIMEINTO DROP PROCEDURE decidirdimension; EJERCICIOS PROPUESTOS DE PROCEDIMEINTOS: Dada la siguiente tabla persona (peso, estado) Realice un procedimiento para determinar si la persona puede donar sangre, si el peso el menor a 50 guarde en estado no admitido, en caso contrario seria admitido. Dada la siguiente tabla clientes (cedula, nombre, apellido) Cree procedimientos para los siguientes casos 1. Que inserte información en la tabla clientes. Ayuda(recibe tres parámetros de entrada)

2. Que actualice el nombre de un cliente. Ayuda (recibe dos parámetros, numero de cedula de quien se va actualizar y el nuevo nombre) 3. Que elimine un cliente. Ayuda (recibe un parámetro, numero de cedula de quien se va eliminar. 4. Investigar procedimientos con paramentaros de salida. 5. Investigar cómo hacer un ciclo (while).

EJEMPLO DE DEFINICIÓN (CREACIÓN, ELIMINACIÓN Y USO) DE UNA FUNCION Ejemplo: se necesita calcular el valor de venta de un producto sabiendo que tiene un costo y porcentaje de ganancia, ejemplo si el costo es 2.000 y el porcentaje de ganancia es 15, el valor venta seria 2.300 Primera pregunta antes de crear una función que paramentaros necesita y que retorna, en este caso se necesita dos valores uno flotante (el costo y otro entero ( el porcentaje de ganancia) y retornara un valor flotante. La función quedaría así: DELIMITER $$ CREATE FUNCTION calcularvalorventa(costo float, porganancia int) RETURNS float DETERMINISTIC DECLARE vventa FLOAT default 0; SET vventa = costo +costo*porganancia/100; RETURN vventa; END $$ DELIMITER ; USAR O LLAMAR FUNCION Para llamar una funcion se hece dentro del select asi: SELECT nombre_de_funcion(parametros); Para el ejemplo seria así: select calcularvalorventa(2000,15) as valorventa; Esta función se puede usar de la siguiente manera con una tabla. Cree una tabla llamada productos (código, nombre, costo, porganancia, cantidad) Create table productos ( Codigo int not null primary key, Nombre varchar(30) not null, Costo float not null, Porganancia int not null, Cantidad float not null );

Inserte varios datos. Insert into productos values(1, arroz libra,850,15,10); Insert into productos values(2, gasesosa 350,800,20,30); Insert into productos values(3, avena alpina vaso,1300,10,45); Insert into productos values(4, menta helada,25,100,150); Insert into productos values(5, salsa tomate fruco 1000gr,5250,30,8); select codigo, nombre, costo, calcularvalorventa(costo, Porganancia) as valorventa from productos; Se puede crear otra función que calcule la ganancia asi: DELIMITER $$ CREATE FUNCTION calcularganancia(costo float, porganancia int) RETURNS float DETERMINISTIC DECLARE ganancia FLOAT default 0; SET ganancia = costo*porganancia/100; RETURN ganancia; END $$ DELIMITER ; Y lo podría utilizar así: select codigo, nombre, costo, calcularvalorventa(costo, Porganancia) as valorventa, calcularganancia(costo, Porganancia) as ganancia from productos; ELIMINAR UNA FUNCION PROCEDIMEINTO DROP FUNCTION calcularganancia; EJERCICIO PROPUESTOS: Ejercicio 1: Dada la siguiente tabla EMPLEADO CEDULA NOMBRE SALARIO BASICO

Cree una función para cada punto teniendo en cuenta que: El subsidio de transporte equivale al 7% al salario básico La salud que corresponde al 4% al salario básico La pensión que corresponde al 4% al salario básico Un bono que corresponde al 8% al salario básico El salario integral es la suma del salario básico -salud - pension +bono + sub de transporte. Cree un procedimiento que Inserte información a la tabla y pruebe las funciones. Ejercicio 2: Dada la siguiente tabla EMPLEADO CEDULA NOMBRE SALARIO BASICO SUBSIDIO SALUD PENSION BONO SALARIO INTEGRAL Cree una función para cada punto teniendo en cuenta que: El subsidio de transporte equivale al 7% al salario básico La salud que corresponde al 4% al salario básico La pensión que corresponde al 4% al salario básico Un bono que corresponde al 8% al salario básico El salario integral es la suma del salario básico -salud - pension +bono + sub de transporte. Cree un procedimiento que Inserte información a la tabla y pruebe las funciones.