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 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

ü  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
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().

ü  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

Entradas populares de este blog

LENGUAJE ENSAMBLADOR CON ARREGLOS

FASES PARA CREACIÓN DE UNA BASE DE DATOS

MODELO RELACIONAL