SlideShare ist ein Scribd-Unternehmen logo
1 von 25
Downloaden Sie, um offline zu lesen
Procedimientos
almacenados en MySQL
By: Miguel Angel Rivera
Definicion
Un procedimiento almacenado es un conjunto de
comandos SQL que pueden almacenarse en el servidor.
Un procedimiento almacenado es un programa que se
guarda físicamente en una base de datos.
Su implementación varía de un gestor de bases de datos
a otro. Este programa esta hecho con un lenguaje
propio de cada Gestor de BD y esta compilado, por lo
que la velocidad de ejecución es muy rápida.
Ventajas
El S.G.B.D. es capaz de trabajar más rápido con los datos
que cualquier programa externo, ya que posee acceso
directo a los datos a manipular y sólo necesita enviar el
resultado final al usuario.
Sólo realizamos una conexión al servidor y este ya es capaz
de realizar todas las comprobaciones sin tener que volver a
establecer una conexión.
Podemos reutilizar el procedimiento y este puede ser
llamado desde diferentes aplicaciones y lenguajes. Sólo lo
programaremos una vez.
Desventajas
Los procedimientos almacenados se guardan
en la BD por lo que si ésta se corrompe
perderemos todos los procedimientos
almacenados.
Utilidad de los procedimientos
almacenados
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 ejectuar algunos procedimientos almacenados.
Procedmientos 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.
Que contiene un Procedimiento
Almacenado
Un nombre.
Puede tener una lista de parámetros.
Tiene un contenido (también llamada definición del
procedimiento).
Ese contenido puede estar compuesto por
instrucciones sql, estructuras de control, declaración
de variables locales, control de errores, etcétera.
Sintaxis de procedimientos almacenados
Los procedimientos almacenados y rutinas se crean con
comandos CREATE PROCEDURE y CREATE FUNCTION.
Una rutina es un procedimiento o una función.
Un procedimiento se invoca usando un comando CALL , y sólo
puede pasar valores usando variables de salida.
Una función puede llamarse desde dentro de un comando como
cualquier otra función (esto es, invocando el nombre de la
función), y puede retornar un valor escalar.
Las rutinas almacenadas pueden llamar otras rutinas
almacenadas.
Sintaxis de procedimientos
almacenados
Cunado se invoca la rutina, se realiza implícitamente USE db_name ( y se
deshace cuando acaba la rutina).
Los comandos USE dentro de procedimientos almacenados no se permiten.
Puede calificar los nombres de rutina con el nombre de la base de datos.
Esto puede usarse para referirse a una rutina que no esté en la base de
datos actual. Por ejemplo, para invocar procedimientos almacenados p o
funciones f esto se asocia con la base de datos test , puede decir CALL
test.p() o test.f().
Cuando se borra una base de datos, todos los procedimientos
almacenados asociados con ella también se borran.
CREATE PROCEDURE y CREATE FUNCTION
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
CREATE PROCEDURE y
CREATE FUNCTION
mysql> delimiter // !
mysql> CREATE PROCEDURE procedimiento (IN cod INT) !
-> BEGIN !
-> SELECT * FROM tabla WHERE cod_t = cod; !
-> END !
-> // !
Query OK, 0 rows affected (0.00 sec) !
mysql> delimiter ; !
mysql> CALL procedimento(4);
CREATE PROCEDURE y
CREATE FUNCTION
Estos comandos crean una rutina
almacenada. Desde MySQL 5.0.3, para crear
una rutina, es necesario tener el permiso
CREATE ROUTINE , y los permisos ALTER
ROUTINE y EXECUTE se asignan
automáticamente a su creador
CREATE PROCEDURE y
CREATE FUNCTION
Por defecto, la rutina se asocia con la base de datos actual.
Para asociar la rutina explícitamente con una base de datos,
especifique el nombre como db_name.sp_name al crearlo.
!
Si el nombre de rutina es el mismo que el nombre de una
función de SQL, necesita usar un espacio entre el nombre y
el siguiente paréntesis al definir la rutina, o hay un error de
sintaxis. Esto también es cierto cuando invoca la rutina
posteriormente.
CREATE PROCEDURE y
CREATE FUNCTION
La cláusula RETURNS puede especificarse sólo con FUNCTION,
donde es obligatorio. Se usa para indicar el tipo de retorno de la
función, y el cuerpo de la función debe contener un comando
RETURN value.
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
valido para una PROCEDURE.
CREATE PROCEDURE y
CREATE FUNCTION
Un procedimiento o función se considera “determinista” si siempre
produce el mismo resultado para los mismos parámetros de entrada, y “no
determinista” en cualquier otro caso. Si no se da ni DETERMINISTIC ni
NOT DETERMINISTIC por defecto es NOT DETERMINISTIC.
Para replicación, use la función NOW() (o su sinónimo) o RAND() no
hace una rutina no determinista necesariamente. Para NOW(), el log
binario incluye el tiempo y hora y replica correctamente. RAND() también
replica correctamente mientras se invoque sólo una vez dentro de una
rutina. (Puede considerar el tiempo y hora de ejecución de la rutina y una
semilla de número aleatorio como entradas implícitas que son idénticas en
el maestro y el esclavo.)
CREATE PROCEDURE y
CREATE FUNCTION
Varias características proporcionan información sobre la
naturaleza de los datos usados por la rutina. CONTAINS
SQL indica que la rutina no contiene comandos que leen o
escriben datos. NO SQL indica que la rutina no contiene
comandos SQL . READS SQL DATA indica que la rutina
contiene comandos que leen datos, pero no comandos que
escriben datos. MODIFIES SQL DATA indica que la rutina
contiene comandos que pueden escribir datos. CONTAINS
SQL es el valor por defecto si no se dan explícitamente
ninguna de estas características.
CREATE PROCEDURE y
CREATE FUNCTION
La característica SQL SECURITY puede usarse para
especificar si la rutina debe ser ejecutada usando los permisos
del usuario que crea la rutina o el usuario que la invoca. El
valor por defecto es DEFINER. Esta característica es nueva
en SQL:2003. El creador o el invocador deben tener permisos
para acceder a la base de datos con la que la rutina está
asociada. Desde MySQL 5.0.3, es necesario tener el permiso
EXECUTE para ser capaz de ejecutar la rutina. El usuario que
debe tener este permiso es el definidor o el invocador, en
función de cómo la característica SQL SECURITY .
CREATE PROCEDURE y
CREATE FUNCTION
MySQL almacena la variable de sistema sql_mode que
está en efecto cuando se crea la rutina, y siempre ejecuta
la rutina con esta inicialización.
!
La cláusula COMMENT es una extensión de MySQL, y
puede usarse para describir el procedimiento almacenado.
Esta información se muestra con los comandos SHOW
CREATE PROCEDURE y SHOW CREATE FUNCTION .
mysql> delimiter //!
mysql> CREATE PROCEDURE simpleproc (OUT param1 INT)!
-> BEGIN!
-> SELECT COUNT(*) INTO param1 FROM t;!
-> END!
-> //!
Query OK, 0 rows affected (0.00 sec)!
mysql> delimiter ;!
mysql> CALL simpleproc(@a);!
Query OK, 0 rows affected (0.00 sec)!
mysql> SELECT @a;!
+------+!
| @a |!
+------+!
| 3 |!
+------+!
1 row in set (0.00 sec)
Ejemplo
mysql> delimiter //!
mysql> CREATE FUNCTION hello (s CHAR(20)) RETURNS CHAR(50)!
-> RETURN CONCAT('Hello, ',s,'!');!
-> //!
Query OK, 0 rows affected (0.00 sec)!
mysql> delimiter ;!
mysql> SELECT hello('world');!
+----------------+!
| hello('world') |!
+----------------+!
| Hello, world! |!
+----------------+!
1 row in set (0.00 sec)
Si el comando RETURN en un procedimiento
almacenado retorna un valor con un tipo distinto al
especificado en la cláusula RETURNS de la función, el
valor de retorno se coherciona al tipo apropiado. Por
ejemplo, si una función retorna un valor ENUM o SET,
pero el comando RETURN retorna un entero, el valor
retornado por la función es la cadena para el miembro
de ENUM correspondiente de un conjunto de
miembros SET .
ALTER PROCEDURE y ALTER
FUNCTION
ALTER {PROCEDURE | FUNCTION} sp_name [characteristic ...]!
!
characteristic:!
{ CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }!
| SQL SECURITY { DEFINER | INVOKER }!
| COMMENT 'string'
DROP PROCEDURE y DROP
FUNCTION
DROP {PROCEDURE | FUNCTION} [IF
EXISTS] sp_name
SHOW CREATE PROCEDURE y
SHOW CREATE FUNCTION
SHOW CREATE {PROCEDURE | FUNCTION}
sp_name
La sentncia CALL
CALL sp_name([parameter[,…]])!
El comando CALL invoca un procedimiento definido
préviamente con CREATE PROCEDURE.
CALL puede pasar valores al llamador usando parámetros
declarados como OUT o INOUT . También “retorna” el
número de registros afectados, que con un programa cliente
puede obtenerse a nivel SQL llamando la función
ROW_COUNT() y desde C llamando la función de la API C
mysql_affected_rows() .

Weitere ähnliche Inhalte

Was ist angesagt?

Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)Jose R. Hilera
 
Ventajas y desventajas de moprosoft
Ventajas y desventajas de moprosoftVentajas y desventajas de moprosoft
Ventajas y desventajas de moprosoftChuyito Alvarado
 
Modelo de Objeto Semantico
Modelo de Objeto SemanticoModelo de Objeto Semantico
Modelo de Objeto SemanticoF
 
Comandos ddl y dml
Comandos ddl y dmlComandos ddl y dml
Comandos ddl y dmlGerardo
 
Unidad iii paradigmas de la ingeniería de software
Unidad iii  paradigmas de la ingeniería de softwareUnidad iii  paradigmas de la ingeniería de software
Unidad iii paradigmas de la ingeniería de softwareHelen De la Cruz
 
2 2 estilos arquitectonicos
2 2 estilos arquitectonicos2 2 estilos arquitectonicos
2 2 estilos arquitectonicoslandeta_p
 
Procedimientos almacenados
Procedimientos almacenadosProcedimientos almacenados
Procedimientos almacenadosVicente Alberca
 
Programación Orientada a Objetos (POO) y UML
Programación Orientada a Objetos (POO) y UMLProgramación Orientada a Objetos (POO) y UML
Programación Orientada a Objetos (POO) y UMLGabriel Cortez
 
Funciones y procedimientos en SQL
Funciones y procedimientos en SQLFunciones y procedimientos en SQL
Funciones y procedimientos en SQLRonald Rivas
 
Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...
Conceptos Unidad 1 Lenguajes Automatas Introducción  a  la Teoría de Lenguaje...Conceptos Unidad 1 Lenguajes Automatas Introducción  a  la Teoría de Lenguaje...
Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...Hugo Alberto Rivera Diaz
 
Creación de tablas y relaciones en mysql workbench
Creación de tablas y relaciones en mysql workbenchCreación de tablas y relaciones en mysql workbench
Creación de tablas y relaciones en mysql workbenchJair Ospino Ardila
 

Was ist angesagt? (20)

Hilos En Java
Hilos En JavaHilos En Java
Hilos En Java
 
Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)
 
Ventajas y desventajas de moprosoft
Ventajas y desventajas de moprosoftVentajas y desventajas de moprosoft
Ventajas y desventajas de moprosoft
 
Modelo de Objeto Semantico
Modelo de Objeto SemanticoModelo de Objeto Semantico
Modelo de Objeto Semantico
 
Comandos ddl y dml
Comandos ddl y dmlComandos ddl y dml
Comandos ddl y dml
 
Unidad iii paradigmas de la ingeniería de software
Unidad iii  paradigmas de la ingeniería de softwareUnidad iii  paradigmas de la ingeniería de software
Unidad iii paradigmas de la ingeniería de software
 
Paradigmas de la programación
Paradigmas de la programación Paradigmas de la programación
Paradigmas de la programación
 
2 2 estilos arquitectonicos
2 2 estilos arquitectonicos2 2 estilos arquitectonicos
2 2 estilos arquitectonicos
 
Procedimientos almacenados
Procedimientos almacenadosProcedimientos almacenados
Procedimientos almacenados
 
C3 lenguaje de presentación.
C3 lenguaje de presentación.C3 lenguaje de presentación.
C3 lenguaje de presentación.
 
Programación Orientada a Objetos (POO) y UML
Programación Orientada a Objetos (POO) y UMLProgramación Orientada a Objetos (POO) y UML
Programación Orientada a Objetos (POO) y UML
 
Funciones y procedimientos en SQL
Funciones y procedimientos en SQLFunciones y procedimientos en SQL
Funciones y procedimientos en SQL
 
Analizador léxico
Analizador léxicoAnalizador léxico
Analizador léxico
 
Estándares para el Modelado de Procesos de Negocios
Estándares para el Modelado de Procesos de NegociosEstándares para el Modelado de Procesos de Negocios
Estándares para el Modelado de Procesos de Negocios
 
Transacciones
TransaccionesTransacciones
Transacciones
 
MVC
MVCMVC
MVC
 
Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...
Conceptos Unidad 1 Lenguajes Automatas Introducción  a  la Teoría de Lenguaje...Conceptos Unidad 1 Lenguajes Automatas Introducción  a  la Teoría de Lenguaje...
Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...
 
Ejemplo rup
Ejemplo rupEjemplo rup
Ejemplo rup
 
Clases y objetos en Java
Clases y objetos en JavaClases y objetos en Java
Clases y objetos en Java
 
Creación de tablas y relaciones en mysql workbench
Creación de tablas y relaciones en mysql workbenchCreación de tablas y relaciones en mysql workbench
Creación de tablas y relaciones en mysql workbench
 

Andere mochten auch

ejercicios diseño:_entidad relación en la creación de una BD
ejercicios diseño:_entidad relación en la creación de una BDejercicios diseño:_entidad relación en la creación de una BD
ejercicios diseño:_entidad relación en la creación de una BDJomar Burgos Palacios
 
Procedimientos almacenados
Procedimientos almacenadosProcedimientos almacenados
Procedimientos almacenadosbat1820
 
Capa_datos_Con_procedimientos_almacenados
Capa_datos_Con_procedimientos_almacenadosCapa_datos_Con_procedimientos_almacenados
Capa_datos_Con_procedimientos_almacenadosUNACAR
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenadosiluijo
 

Andere mochten auch (8)

ejercicios diseño:_entidad relación en la creación de una BD
ejercicios diseño:_entidad relación en la creación de una BDejercicios diseño:_entidad relación en la creación de una BD
ejercicios diseño:_entidad relación en la creación de una BD
 
Sql procedimientos-almacenados
Sql procedimientos-almacenadosSql procedimientos-almacenados
Sql procedimientos-almacenados
 
Taller Tablas Dinámicas Excel 2010
Taller Tablas Dinámicas Excel 2010Taller Tablas Dinámicas Excel 2010
Taller Tablas Dinámicas Excel 2010
 
Procedimientos almacenados
Procedimientos almacenadosProcedimientos almacenados
Procedimientos almacenados
 
Curso HTML 5 & jQuery - Leccion 4
Curso HTML 5 & jQuery - Leccion 4Curso HTML 5 & jQuery - Leccion 4
Curso HTML 5 & jQuery - Leccion 4
 
Capa_datos_Con_procedimientos_almacenados
Capa_datos_Con_procedimientos_almacenadosCapa_datos_Con_procedimientos_almacenados
Capa_datos_Con_procedimientos_almacenados
 
7.1. procedimientos almacenados
7.1.  procedimientos almacenados7.1.  procedimientos almacenados
7.1. procedimientos almacenados
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenados
 

Ähnlich wie Procedimientos almacenados en MySQL (20)

Teoria procedimientos almacenados
Teoria procedimientos almacenadosTeoria procedimientos almacenados
Teoria procedimientos almacenados
 
Ms SQL Server
Ms SQL ServerMs SQL Server
Ms SQL Server
 
Procedimientos almacenados
Procedimientos almacenadosProcedimientos almacenados
Procedimientos almacenados
 
Procedimientos almacenados
Procedimientos almacenadosProcedimientos almacenados
Procedimientos almacenados
 
Procedimientos almacenados
Procedimientos almacenadosProcedimientos almacenados
Procedimientos almacenados
 
Procedimientos almacenadoss
Procedimientos almacenadossProcedimientos almacenadoss
Procedimientos almacenadoss
 
Pa
PaPa
Pa
 
Programacion de base de datos - unidad 3 Programacion de base de datos
Programacion de base de datos - unidad 3 Programacion de base de datosProgramacion de base de datos - unidad 3 Programacion de base de datos
Programacion de base de datos - unidad 3 Programacion de base de datos
 
Objeto Sql Command
Objeto Sql CommandObjeto Sql Command
Objeto Sql Command
 
procedimientos almacenados
procedimientos almacenadosprocedimientos almacenados
procedimientos almacenados
 
. procedimientos almacenados
.  procedimientos almacenados.  procedimientos almacenados
. procedimientos almacenados
 
Funciones store proc_triggers
Funciones store proc_triggersFunciones store proc_triggers
Funciones store proc_triggers
 
Procedimientos almacenados..mañana
Procedimientos almacenados..mañanaProcedimientos almacenados..mañana
Procedimientos almacenados..mañana
 
Transacciones
TransaccionesTransacciones
Transacciones
 
Statement
StatementStatement
Statement
 
Statement
StatementStatement
Statement
 
Statement
StatementStatement
Statement
 
PROCEDIMIENTOS ALMACENADOS
PROCEDIMIENTOS ALMACENADOSPROCEDIMIENTOS ALMACENADOS
PROCEDIMIENTOS ALMACENADOS
 
Java con base de datos
Java con base de datosJava con base de datos
Java con base de datos
 
Procedimientos y funciones
Procedimientos y funcionesProcedimientos y funciones
Procedimientos y funciones
 

Mehr von Miguel Angel Rivera Robledo

Mehr von Miguel Angel Rivera Robledo (8)

Manual de Moodle (Plataforma Educativa ITSMIGRA)
Manual de Moodle (Plataforma Educativa ITSMIGRA)Manual de Moodle (Plataforma Educativa ITSMIGRA)
Manual de Moodle (Plataforma Educativa ITSMIGRA)
 
Ejercicio sintesis y cuestionario sobre el tema modelo relacional
Ejercicio sintesis y cuestionario sobre el tema modelo relacionalEjercicio sintesis y cuestionario sobre el tema modelo relacional
Ejercicio sintesis y cuestionario sobre el tema modelo relacional
 
Ejercicio sintesis y cuestionario sobre el tema modelo e r
Ejercicio sintesis y cuestionario sobre el tema modelo e rEjercicio sintesis y cuestionario sobre el tema modelo e r
Ejercicio sintesis y cuestionario sobre el tema modelo e r
 
Ejercicio sintesis y cuestionario sobre el tema modelo osi
Ejercicio sintesis y cuestionario sobre el tema modelo osiEjercicio sintesis y cuestionario sobre el tema modelo osi
Ejercicio sintesis y cuestionario sobre el tema modelo osi
 
Fundamentos de redes
Fundamentos de redesFundamentos de redes
Fundamentos de redes
 
Tarea de Tarea taller de base de datos
Tarea de Tarea taller de base de datosTarea de Tarea taller de base de datos
Tarea de Tarea taller de base de datos
 
Integridad de base de datos
Integridad de base de datosIntegridad de base de datos
Integridad de base de datos
 
MongoDB
MongoDBMongoDB
MongoDB
 

Kürzlich hochgeladen

NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfUPTAIDELTACHIRA
 
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdfMiNeyi1
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxlupitavic
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxYadi Campos
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfAngélica Soledad Vega Ramírez
 
Abril 2024 - Maestra Jardinera Ediba.pdf
Abril 2024 -  Maestra Jardinera Ediba.pdfAbril 2024 -  Maestra Jardinera Ediba.pdf
Abril 2024 - Maestra Jardinera Ediba.pdfValeriaCorrea29
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docxEliaHernndez7
 
Criterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficiosCriterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficiosJonathanCovena1
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptxdeimerhdz21
 
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfGUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfPaolaRopero2
 
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONALMiNeyi1
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfpatriciaines1993
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptAlberto Rubio
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...JonathanCovena1
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Alejandrino Halire Ccahuana
 
Infografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdfInfografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdfAlfaresbilingual
 

Kürzlich hochgeladen (20)

NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
 
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
Abril 2024 - Maestra Jardinera Ediba.pdf
Abril 2024 -  Maestra Jardinera Ediba.pdfAbril 2024 -  Maestra Jardinera Ediba.pdf
Abril 2024 - Maestra Jardinera Ediba.pdf
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 
Criterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficiosCriterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficios
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfGUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
 
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
5.- Doerr-Mide-lo-que-importa-DESARROLLO PERSONAL
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
 
Infografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdfInfografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdf
 

Procedimientos almacenados en MySQL

  • 2. Definicion Un procedimiento almacenado es un conjunto de comandos SQL que pueden almacenarse en el servidor. Un procedimiento almacenado es un programa que se guarda físicamente en una base de datos. Su implementación varía de un gestor de bases de datos a otro. Este programa esta hecho con un lenguaje propio de cada Gestor de BD y esta compilado, por lo que la velocidad de ejecución es muy rápida.
  • 3. Ventajas El S.G.B.D. es capaz de trabajar más rápido con los datos que cualquier programa externo, ya que posee acceso directo a los datos a manipular y sólo necesita enviar el resultado final al usuario. Sólo realizamos una conexión al servidor y este ya es capaz de realizar todas las comprobaciones sin tener que volver a establecer una conexión. Podemos reutilizar el procedimiento y este puede ser llamado desde diferentes aplicaciones y lenguajes. Sólo lo programaremos una vez.
  • 4. Desventajas Los procedimientos almacenados se guardan en la BD por lo que si ésta se corrompe perderemos todos los procedimientos almacenados.
  • 5. Utilidad de los procedimientos almacenados 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 ejectuar algunos procedimientos almacenados.
  • 6. Procedmientos 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.
  • 7. Que contiene un Procedimiento Almacenado Un nombre. Puede tener una lista de parámetros. Tiene un contenido (también llamada definición del procedimiento). Ese contenido puede estar compuesto por instrucciones sql, estructuras de control, declaración de variables locales, control de errores, etcétera.
  • 8. Sintaxis de procedimientos almacenados Los procedimientos almacenados y rutinas se crean con comandos CREATE PROCEDURE y CREATE FUNCTION. Una rutina es un procedimiento o una función. Un procedimiento se invoca usando un comando CALL , y sólo puede pasar valores usando variables de salida. Una función puede llamarse desde dentro de un comando como cualquier otra función (esto es, invocando el nombre de la función), y puede retornar un valor escalar. Las rutinas almacenadas pueden llamar otras rutinas almacenadas.
  • 9. Sintaxis de procedimientos almacenados Cunado se invoca la rutina, se realiza implícitamente USE db_name ( y se deshace cuando acaba la rutina). Los comandos USE dentro de procedimientos almacenados no se permiten. Puede calificar los nombres de rutina con el nombre de la base de datos. Esto puede usarse para referirse a una rutina que no esté en la base de datos actual. Por ejemplo, para invocar procedimientos almacenados p o funciones f esto se asocia con la base de datos test , puede decir CALL test.p() o test.f(). Cuando se borra una base de datos, todos los procedimientos almacenados asociados con ella también se borran.
  • 10. CREATE PROCEDURE y CREATE FUNCTION 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
  • 11. CREATE PROCEDURE y CREATE FUNCTION mysql> delimiter // ! mysql> CREATE PROCEDURE procedimiento (IN cod INT) ! -> BEGIN ! -> SELECT * FROM tabla WHERE cod_t = cod; ! -> END ! -> // ! Query OK, 0 rows affected (0.00 sec) ! mysql> delimiter ; ! mysql> CALL procedimento(4);
  • 12. CREATE PROCEDURE y CREATE FUNCTION Estos comandos crean una rutina almacenada. Desde MySQL 5.0.3, para crear una rutina, es necesario tener el permiso CREATE ROUTINE , y los permisos ALTER ROUTINE y EXECUTE se asignan automáticamente a su creador
  • 13. CREATE PROCEDURE y CREATE FUNCTION Por defecto, la rutina se asocia con la base de datos actual. Para asociar la rutina explícitamente con una base de datos, especifique el nombre como db_name.sp_name al crearlo. ! Si el nombre de rutina es el mismo que el nombre de una función de SQL, necesita usar un espacio entre el nombre y el siguiente paréntesis al definir la rutina, o hay un error de sintaxis. Esto también es cierto cuando invoca la rutina posteriormente.
  • 14. CREATE PROCEDURE y CREATE FUNCTION La cláusula RETURNS puede especificarse sólo con FUNCTION, donde es obligatorio. Se usa para indicar el tipo de retorno de la función, y el cuerpo de la función debe contener un comando RETURN value. 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 valido para una PROCEDURE.
  • 15. CREATE PROCEDURE y CREATE FUNCTION Un procedimiento o función se considera “determinista” si siempre produce el mismo resultado para los mismos parámetros de entrada, y “no determinista” en cualquier otro caso. Si no se da ni DETERMINISTIC ni NOT DETERMINISTIC por defecto es NOT DETERMINISTIC. Para replicación, use la función NOW() (o su sinónimo) o RAND() no hace una rutina no determinista necesariamente. Para NOW(), el log binario incluye el tiempo y hora y replica correctamente. RAND() también replica correctamente mientras se invoque sólo una vez dentro de una rutina. (Puede considerar el tiempo y hora de ejecución de la rutina y una semilla de número aleatorio como entradas implícitas que son idénticas en el maestro y el esclavo.)
  • 16. CREATE PROCEDURE y CREATE FUNCTION Varias características proporcionan información sobre la naturaleza de los datos usados por la rutina. CONTAINS SQL indica que la rutina no contiene comandos que leen o escriben datos. NO SQL indica que la rutina no contiene comandos SQL . READS SQL DATA indica que la rutina contiene comandos que leen datos, pero no comandos que escriben datos. MODIFIES SQL DATA indica que la rutina contiene comandos que pueden escribir datos. CONTAINS SQL es el valor por defecto si no se dan explícitamente ninguna de estas características.
  • 17. CREATE PROCEDURE y CREATE FUNCTION La característica SQL SECURITY puede usarse para especificar si la rutina debe ser ejecutada usando los permisos del usuario que crea la rutina o el usuario que la invoca. El valor por defecto es DEFINER. Esta característica es nueva en SQL:2003. El creador o el invocador deben tener permisos para acceder a la base de datos con la que la rutina está asociada. Desde MySQL 5.0.3, es necesario tener el permiso EXECUTE para ser capaz de ejecutar la rutina. El usuario que debe tener este permiso es el definidor o el invocador, en función de cómo la característica SQL SECURITY .
  • 18. CREATE PROCEDURE y CREATE FUNCTION MySQL almacena la variable de sistema sql_mode que está en efecto cuando se crea la rutina, y siempre ejecuta la rutina con esta inicialización. ! La cláusula COMMENT es una extensión de MySQL, y puede usarse para describir el procedimiento almacenado. Esta información se muestra con los comandos SHOW CREATE PROCEDURE y SHOW CREATE FUNCTION .
  • 19. mysql> delimiter //! mysql> CREATE PROCEDURE simpleproc (OUT param1 INT)! -> BEGIN! -> SELECT COUNT(*) INTO param1 FROM t;! -> END! -> //! Query OK, 0 rows affected (0.00 sec)! mysql> delimiter ;! mysql> CALL simpleproc(@a);! Query OK, 0 rows affected (0.00 sec)! mysql> SELECT @a;! +------+! | @a |! +------+! | 3 |! +------+! 1 row in set (0.00 sec)
  • 20. Ejemplo mysql> delimiter //! mysql> CREATE FUNCTION hello (s CHAR(20)) RETURNS CHAR(50)! -> RETURN CONCAT('Hello, ',s,'!');! -> //! Query OK, 0 rows affected (0.00 sec)! mysql> delimiter ;! mysql> SELECT hello('world');! +----------------+! | hello('world') |! +----------------+! | Hello, world! |! +----------------+! 1 row in set (0.00 sec)
  • 21. Si el comando RETURN en un procedimiento almacenado retorna un valor con un tipo distinto al especificado en la cláusula RETURNS de la función, el valor de retorno se coherciona al tipo apropiado. Por ejemplo, si una función retorna un valor ENUM o SET, pero el comando RETURN retorna un entero, el valor retornado por la función es la cadena para el miembro de ENUM correspondiente de un conjunto de miembros SET .
  • 22. ALTER PROCEDURE y ALTER FUNCTION ALTER {PROCEDURE | FUNCTION} sp_name [characteristic ...]! ! characteristic:! { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }! | SQL SECURITY { DEFINER | INVOKER }! | COMMENT 'string'
  • 23. DROP PROCEDURE y DROP FUNCTION DROP {PROCEDURE | FUNCTION} [IF EXISTS] sp_name
  • 24. SHOW CREATE PROCEDURE y SHOW CREATE FUNCTION SHOW CREATE {PROCEDURE | FUNCTION} sp_name
  • 25. La sentncia CALL CALL sp_name([parameter[,…]])! El comando CALL invoca un procedimiento definido préviamente con CREATE PROCEDURE. CALL puede pasar valores al llamador usando parámetros declarados como OUT o INOUT . También “retorna” el número de registros afectados, que con un programa cliente puede obtenerse a nivel SQL llamando la función ROW_COUNT() y desde C llamando la función de la API C mysql_affected_rows() .