Procedimientos Almacenados
-
Upload
rafael-honores-vera -
Category
Engineering
-
view
28 -
download
1
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