PROCEDIMIENTOS ALMACENADOS
1. Contenido
v Definición
Un procedimiento almacenado (stored procedure en
inglés) es un programa (o procedimiento) almacenado físicamente en una base de datos. Su implementación varía de un gestor de
bases de datos a otro.
La ventaja de un
procedimiento almacenado es que al ser ejecutado, en
respuesta a una petición de usuario, es ejecutado directamente en el motor de
bases de datos, el cual usualmente corre en un servidor separado. Como tal,
posee acceso directo a los datos que necesita manipular y sólo necesita enviar
sus resultados de regreso al usuario, deshaciéndose de la sobrecarga resultante
de comunicar grandes cantidades de datos salientes y entrantes.
v Sintaxis
ü Create
Procedure Y Create Function
CREATE PROCEDUREsp_name
([parameter
[,...]])
[characteristic
...]routine_body
CREATE FUNCTIONsp_name
([parameter
[,...]])
RETURNStype
[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
ü 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
ü SHOW PROCEDURE STATUS y SHOW FUNCTION STATUS
SHOW {PROCEDURE | FUNCTION} STATUS [LIKE 'pattern
']
ü La sentencia CALL
CALLsp_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().
ü
Sentencia compuesta BEGIN ... END
[etiqueta_inicio:] BEGIN
[lista_sentencias]
END [etiqueta_fin]
La sintaxis BEGIN ... END se utiliza para escribir
sentencias compuestas que pueden aparecer en el interior de procedimientos
almacenados y triggers.
ü
Sentencia DECLARE
DECLARE handler_type HANDLER FOR condition_value[,...]
sp_statement
handler_type:
CONTINUE
| EXIT
| UNDO
condition_value:
SQLSTATE
[VALUE] sqlstate_value
| condition_name
| SQLWARNING
| NOT FOUND
| SQLEXCEPTION
|
mysql_error_code
v Administracion de Procedimientos (Creación,
modificación, elijación)
Creacion:
CREATE PROCEDURE
total_factura (@id_factura INT)
AS
BEGIN
SELECT
SUM(UNIDADES*PRECIO) FROM RENGLON
WHERE RENGLON.IDFACTURA
= @id_factura;
END;
Modificacion:
ALTER PROCEDURE
modificar_cliente
(@id_cliente INT, @nombre_cliente
VARCHAR
(20), @apellido_cliente VARCHAR
(20))
WITH ENCRYPTION
AS
UPDATE CLIENTE
SET
NOMBRE=@nombre_cliente,APELLIDO=@apellido_cliente
WHERE IDCLIENTE=@id_cliente;
Eliminación:
DROP { PROC | PROCEDURE } { [ schema_name. ]
procedure } [ ,...n ] DROP PROCEDURE
nombre_procedimiento
Ejemplo.
drop procedure
pa_libros_autor;
v Ejemplos
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.
2. Resumen
Los procedimientos almacenados son un conjunto de
instrucciones SQL más una serie de estructuras de control que nos permiten
dotar de cierta lógica al procedimiento. Estos procedimientos están guardados
en el servidor y pueden ser accedidos a través de llamadas.
Para crear un procedimiento, SQL nos ofrece la directiva
CREATE PROCEDURE. Para llamar a un procedimiento lo hacemos mediante la
instrucción CALL. Desde un procedimiento podemos invocar a su vez a otros
procedimientos o funciones.
3. Summary
Stored procedures are a set of SQL statements over a
number of control structures that allow us to provide a certain logic to the procedure.
These procedures are stored on the server and can be accessed through calls.
To create a procedure, SQL offers the CREATE PROCEDURE directive.
To call a procedure we do using the CALL instruction. Since we can invoke a
procedure turn to other procedures or functions.
4. Recomendaciones
¨
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.
¨
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.
¨
Podemos reutilizar el procedimiento y este puede ser
llamado desde diferentes aplicaciones y lenguajes. Sólo lo programaremos una
vez.
¨
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.
5. Conclusiones
¨
Aumentan el rendimiento. Una vez creados, son compilados
y almacenados en el catálogo de la base de datos. Corren más rápido que
comandos SQL enviados desde aplicaciones externas, ya que estos no están
compilados.
¨
Reducen el tráfico entre las aplicaciones y el servidor
de bases de datos porque en vez de enviar varios comandos SQL sin compilar, la
aplicación sólo tiene que enviar el nombre del SP y obtener el resultado de su
ejecución.
¨
Aceptar parámetros de entrada y devolver varios valores
en forma de parámetros de salida al lote o al procedimiento que realiza la
llamada.
¨
Contener instrucciones de programación que realicen
operaciones en la base de datos, incluidas las llamadas a otros procedimientos.
¨
Un procedimiento es un subprograma que ejecuta una acción
específica y que no devuelve ningún valor. Un procedimiento tiene un nombre, un
conjunto de parámetros (opcional) y un bloque de código.
6. Apreciación del Equipo
Como equipo hemos opinamos que los procedimientos
almacenados son módulos o rutinas que encapsulan código para su reutilización.
Un procedimiento almacenado puede incluir parámetros de
entrada, devolver resultados tabulares o escalares y mensajes para el cliente,
invocar instrucciones de lenguaje de definición de datos (DDL) e instrucciones
de lenguaje de manipulación de datos (DML), así como devolver parámetros de
salida.
VIDEO:
DIAPOSITIVA:
7. Bibliografía o Linkografía
ü Definición
Procedimientos Almacenados. Viernes, 15 de Julio del 2016, Contenido
Definición. Recuperado
de,
ü Definición Procedimientos Almacenados. Viernes, 15 de Julio del 2016, Contenido Sintaxis. Recuperado de,
ü Definición Procedimientos Almacenados (creación, modificación y eliminación).
Viernes, 15 de Julio del 2016, Contenido Administración de Procedimientos Almacenados. Recuperado
de,
Definición Procedimientos Almacenados. Viernes, 15 de Julio del 2016, Contenido Ejemplos. Recuperado de,
Comentarios
Publicar un comentario