Procedimientos Almacenados

Post on 10-Feb-2017

28 views 1 download

Transcript of Procedimientos Almacenados

BASE DE DATOS I

DOCENTE: MARCO AURELIO PORRO CHULLI

TEMA: PROCEDIMIENTOS ALMACENADOS

DEFINICIÓNUN 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.

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

               Administracion de Procedimientos (Creación, modificación, elijación)

 Creacion:CREATE PROCEDURE total_factura (@id_factura INT)ASBEGINSELECT SUM(UNIDADES*PRECIO) FROM RENGLONWHERE RENGLON.IDFACTURA = @id_factura;END;  

  Modificacion:ALTER PROCEDURE modificar_cliente    (@id_cliente INT, @nombre_cliente  VARCHAR (20), @apellido_cliente       VARCHAR (20))WITH ENCRYPTIONASUPDATE CLIENTE   SET NOMBRE=@nombre_cliente,APELLIDO=@apellido_cliente   WHERE IDCLIENTE=@id_cliente;        Eliminación:DROP { PROC | PROCEDURE } { [ schema_name. ] procedure } [ ,...n ]  DROP PROCEDURE nombre_procedimientoEjemplo.drop procedure pa_libros_autor;

Bagua Grande ,Abril 2016