Procedimientos Almacenados

11
BASE DE DATOS I DOCENTE: MARCO AURELIO PORRO CHULLI TEMA: PROCEDIMIENTOS ALMACENADOS

Transcript of Procedimientos Almacenados

Page 1: Procedimientos Almacenados

BASE DE DATOS I

DOCENTE: MARCO AURELIO PORRO CHULLI

TEMA: PROCEDIMIENTOS ALMACENADOS

Page 2: 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.

Page 3: Procedimientos Almacenados

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

Page 4: Procedimientos Almacenados

  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'

Page 5: Procedimientos Almacenados

 

 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[,...]])

Page 6: Procedimientos Almacenados

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

Page 7: Procedimientos Almacenados

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.

Page 8: Procedimientos Almacenados

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

Page 9: Procedimientos Almacenados

               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;  

Page 10: Procedimientos Almacenados

  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;

Page 11: Procedimientos Almacenados

Bagua Grande ,Abril 2016