Bases de Datos Relacionales



Documentos relacionados
PROCEDIMIENTOS ALMACENADOS Y TRIGGERS. Bases de Datos Ingeniería de Sistemas y Computación Universidad Nacional de Colombia 2007

Base de datos Procedimientos Almacenados y Funciones

ADMINISTRACIÓN DE BASE DE DATOS

MANUALITO MS-SQL SERVER

6. PROGRAMACIÓN CON TRANSACT-SQL

GALA CONCEPTO COMMIT, ROOLBACK SAVEPOINTS (SAVE TRANSACTION) No Consultas. Definiciones Transacciones ( L33 )

Consultas con combinaciones

Tema: PROCEDIMIENTOS ALMACENADOS.

UNIVERSIDAD DEL ISTMO CAMPUS IXTEPEC LIC. INFORMATICA GRUPO 508 PROCEDIMIENTOS ALMACENADOS EN SQL SERVER 2000

SQL PROCEDURAL Triggers y Stored Procedures. Ing. Gustavo A. Correa Reina UNCPBA 2008

Base de datos relacional

m047a Curso Programando una Base de Datos SQL Server 2008, 36 h

Aplicaciones de las vistas Concepto de vista Vistas en SQL Vistas en SQL.

Bases de Datos SQL 1 SQL. Jorge Pérez R. Universidad de Talca, II Semestre 2006

9- Procedimientos almacenados.

Creación y administración de grupos de dominio

Tema: Procedimientos almacenados y cursores. Facultad : Ingeniería Escuela : Computación Asignatura: SQL SERVER. GUÍA 2 Pág. 1

Oracle Database 10g: Taller de Administración I 1-2

Uso de las herramientas de consulta de Transact-SQL

PROCEDIMIENTOS ALMACENADOS. CREATE PROCEDURE nombreprocedimiento tipodato [=valordefecto]][,...]

Estándar de desarrollo de aplicaciones del Govern de les Illes Balears

Introducción a PHP. * No es necesario declarar previamente las variables.

Repaso. Laboratorio Informix. Stored Procedures. Ejemplo. Creación de stored procedures. Sql en un Procedimiento

Procedimientos Almacenados Activadores (triggers) Curso Bases de Datos

Acronis License Server. Guía del usuario

PL/SQL. Con PL/SQL vamos a poder programar las unidades de programa de la base de datos Oracle:

Transacciones y bloqueos en SQL-Server

- Bases de Datos - - Diseño Físico - Luis D. García

! Una variable declarada con final no puede volver a ser reinicializada. numero = 2;! ! Para definir constantes

Buenas Prácticas en Bases de Datos. María del Pilar Angeles. Posgrado de la Facultad de Ingeniería, UNAM.

Laboratorio Informix. Stored Procedures Triggers

Sub consultas avanzadas

Enlaces relacionados:

UNIVERSIDAD NACIONAL DE SAN AGUSTÍN FACULTAD DE PRODUCCIÓN Y SERVICIOS ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS LABORATORIO DE BASES DE DATOS 1

III. ADMINISTRACIÓN DE ORACLE.

CONCEPTOS DE PROCESAMIENTO DE TRANSACCIONES

SQL dinámico en Transact SQL

TEMA 6: MODIFICACIÓN DE LA BASE DE DATOS EN SQL

LABORATORIO 10. ADMINISTRACIÓN DE COPIAS DE SEGURIDAD EN SQL SERVER

GedicoPDA: software de preventa

Un ejemplo teórico de trigger podría ser éste:

Programación de Consultas SQL ADO.Net LDP / DUOC-AV

SQL (Structured Query Language)

Backup & Recovery Oracle 9i. Las copias físicas offline, conocidas como Backups en frío, se realizan cuando la Base de Datos está parada.

Procedimientos Almacenados con InterBase

Optimizar base de datos WordPress

GENERACIÓN DE ANTICIPOS DE CRÉDITO


Guía de Laboratorio Base de Datos I.

RESUMEN INFORMATIVO PROGRAMACIÓN DIDÁCTICA CURSO 2013/2014

Cierre de Ejercicios Fiscales en el Sistema ASPEL-COI 4.0

Administradores de Bases de Datos Studio.NET 2005 Y SQL Server Barrios

Una base de datos es una colección de información ordenada e interrelacionada que es de importancia para una empresa.

Introducción a la Firma Electrónica en MIDAS

Instalación y configuración de Windows SharePoint Services (WSS) 2003

Tema: Disparadores Parte I.

Creación y administración de grupos locales

Procedimientos almacenados con parametros de salida

Guía Rápida de Puesta en Marcha de MailStore

Herramientas computacionales para la matemática MATLAB: Funciones definidas por el usuario (parte II)

Bases de Datos / Elementos de Bases de Datos Que es un Stored Procedure? Stored Procedures: Ventajas

INSTITUTO TECNOLÓGICO SUPERIOR DE ESCÁRCEGA INGENIERÍA EN SISTEMAS COMPUTACIONALES MATERIA: TALLER DE BASE DE DATOS TRABAJO: PROFESOR:

PHPMYADMIN Y MYSQL. Para gestionar la base de datos MySQL, lo haremos desde la aplicación PhpMyAdmin.

Usando los disparadores de la base de datos con el Blended Agent para hacer el proceso específico a la aplicación

GENERACIÓN DE CÓDIGO

Procedimientos, Funciones, Trigger y Cursores en ORACLE

Arquitectura de sistema de alta disponibilidad

Oficina Online. Manual del administrador

SEPARAR Y ADJUNTAR UNA BASE DE DATOS. Separar una base de datos

Estructuras de Datos y Algoritmos Tecnólogo en Informática

LABORATORIO 10. COPIAS DE SEGURIDAD, RESTAURACIÓN Y RECUPERACIÓN DE UNA BD

INSTRUCCIONES CIERRE EJERCICIO 2014

Introducción a las redes de computadores

GUIA COMPLEMENTARIA PARA EL USUARIO DE AUTOAUDIT. Versión N 02 Fecha: 2011-Febrero Apartado: Archivos Anexos ARCHIVOS ANEXOS

Modulo 1 El lenguaje Java

Oracle básico (IV): Programación en PL/SQL

Manual de operación para el ingreso de casos de CFDs en el centro de atención a proveedores

Seguridad en SQL Server 2005

Sintaxis y Convenciones de Java. M. en C. Erika Vilches

SRM RELACIÓN CON LOS PROVEEDORES MANUAL DEL SUMINISTRADOR. Junio Versión 2

Principales rutinas de mantenimiento en una base de datos Firebird

Diseño de bases de datos

Curso de PHP con MySQL Gratis

Con SNMP y MIB-II sólo se puede recuperar información local a los dispositivos.

Guía de implementación Softland en SQL Server Versión 1.0

NOTAS TÉCNICAS SOBRE EL SIT: Definición y Configuración de Usuarios

Un nombre de usuario de 30 caracteres o menos, sin caracteres especiales y que inicie con una letra.

ESTUDIOS INMOBILIARIOS Informática Aplicada a la Administración de Fincas

PROCESO DE DESVINCULACIÓN DE PERSONAL - CONSTRUCCIÓN Bizagi Process Modeler

Gestión de Permisos. Bizagi Suite. Copyright 2014 Bizagi

Ejercicios: Administración de Bases de Datos en ORACLE

BASES DE DATOS AVANZADAS Transacciones en MYSQL

FIREBIRD: SQL PROCEDIMENTAL (PSQL)

McAfee Security-as-a-Service

Google Groups. Administración de Grupos de Google Apps

BPMN básico. Clase Modelos de Procesos. Javier Bermudez

Capitulo VI. Conclusiones.

Adaptación al NPGC. Introducción. NPGC.doc. Qué cambios hay en el NPGC? Telf.: Fax.:

Toda base de datos relacional se basa en dos objetos

El usuario puede utilizar esta tabla derivada como una tabla más, en sus consultas.

Transcripción:

Bases de Datos Relacionales PROCEDIMIENTOS ALMACENADOS Preparó: Ismael Castañeda Fuentes Fuentes: Manuales Sybase Manuales SQL Server Manuales Oracle

Procedimientos almacenados Un procedimiento almacenado es un conjunto de sentencias SQL y de control de flujo Beneficios de los procedimientos almacenados: Simplifican la ejecución de tareas repetitivas Corren más rápido que las mismas instrucciones ejecutadas en forma interactiva Reducen el tráfico a través de la red Pueden capturar errores antes que ellos puedan entrar a la base de datos Establece consistencia porque ejecuta las tareas de la misma forma Permite el desarrollo modular de aplicaciones Ayuda a proveer seguridad Puede forzar reglas y defaults complejos de los negocios

Procedimientos - Tipos Procedimientos almacenados definidos por el usuario Son procedimientos definidos por el usuario que se deben llamar explícitamente Triggers Son procedimientos definidos por el usuario que se ejecutan automáticamente cuando se modifica un dato en una tabla Procedimientos del sistema Procedimientos suministrados por el sistema Procedimientos extendidos Procedimientos que hacen llamadas al sistema operativo y ejecutan tareas a ese nivel

Interactive Execution

Procedimientos - Creación

Procedimientos - Ejecución

Procedimientos - Ventajas en el rendimiento Un procedimiento almacenado se ejecuta más rápido que un batch porque: El procedimiento almacenado ya ha sido analizado Ya se han resuelto las referencias a los objetos referenciados en el procedimiento almacenado No se necesita construir el árbol de búsqueda, él usa el que se hace en el momento de compilarlo No se necesita crear un plan de búsqueda, porque ya el procedimiento tiene uno

Procedimientos - Crear y borrar Sintaxis simplificada para create: create proc procedure_name as statements return Sintaxis simplificada para drop: drop proc procedure_name

Sintaxis simplificada: [exec execute] procedure_name Procedimientos - Ejecución

Procedimientos - Variables Los procedimientos almacenados pueden crear y usar variables locales Las variables sólo existen mientras exista el procedimiento Las variables no las puede usar otro proceso

Procedimientos - Sentencias válidas e inválidas Un procedimiento almacenado puede: Seleccionar y modificar datos Crear tablas temporales y permanentes Llamar otros procedimientos almacenados Referenciar objetos de bases de datos Un procedimiento almacenado no puede ejecutar: use database create view create default create rule create procedure create trigger

Procedimientos Permisos Para permitir que otros usen un procedimiento almacenado, el propietario debe dar los respectivos permisos Sintaxis simplificada: grant execute on procedure_name to user_list

Procedimientos Parámetros de entrada Un Parámetro de entrada es una variable local del procedimiento almacenado que puede recibir un valor de una sentencia exec procedure lista_de_parámetros

Sintaxis simplificada: Procedimientos Parámetros de entrada create procedure procedure_name (parameter_name datatype default_value [, parameter_name datatype default_value...] ) as statements return

Procedimientos Paso de parámetros Dos métodos para pasar valores a parámetros: Paso de parámetros por posición Paso de parámetros por nombre

Procedimientos Paso de parámetros por posición Sintaxis para paso por posición: [exec execute] procedure_name value [, value...] Los parámetros se deben pasar en el mismo orden en que ellos aparecen en la sentencia create procedure Como este método es más propenso a errores, se aconseja el paso por nombre

Procedimientos Paso de parámetros por nombre Sintaxis para paso por nombre: [exec execute] procedure procedure_name parameter_name = value [, parameter_name = value ] Los nombres de los parámetros en la sentencia exec deben concordar con los nombres de los parámetros usados en la sentencia create procedure Los parámetros pueden pasar en cualquier orden

Procedimientos Valores por default Se puede asignar un valor por default a un parámetro cuando él no se indica en la sentencia exec...

Procedimientos Errores típicos en parámetros de entrada Los valores que se pasan no tienen el mismo tipo de datos que los parámetros definidos En la misma sentencia, se pasa un parámetro por posición después de haber pasado un parámetro por nombre Aunque no es recomendado, es posible mezclar los dos métodos para pasar valores, sin embargo, después de pasar un valor a un parámetro por nombre, todos los restantes de deben pasar por nombre Olvido de uno o más parámetros El olvido de uno o más valores para los parámetros, hace que se usen los valores por default Los valores para los parámetros se pasan en un orden errado

Procedimientos Retorno de valores Un parámetro output es una variable local en un procedimiento almacenado que se puede enviar a una Sentencia exec procedure

Procedimientos Crear parámetros que retornan valores Sintaxis simplificada: create procedure procedure_name (parameter_name datatype output [, parameter_name datatype output...] ) as statements return

Procedimientos Usar parámetros que retornan valores Sintaxis simplificada: [exec execute] procedure_name variable output Los valores que retornan los parámetros se pasan automáticamente al conjunto respuesta El retorno de valores se pueden pasar por nombre o por posición Se recomienda el paso por nombre

Legibilidad Para hacer un código más legible: Utilizar comentarios Utilizar indentación Usar espacios en blanco y dejar el código organizado en columnas Declarar e iniciar las variables en un bloque Establecer un conjunto de buenas prácticas para legibilidad

Procedimientos Chequeo de valores El servidor chequea que los parámetros concuerden en tipo de datos Los procedimientos almacenados verifican que los valores pasados se encuentren dentro del dominio establecido

Procedimientos mensajes de error Si un procedimiento almacenado requiere valores para los parámetros, el usuario debe incluir un tratamiento de esos errores y un manejo de mensajes de error Ejemplo: create proc proc_cutoff (@title_id char(6) = NULL, @max_price money = NULL) as if @title_id is NULL or @max_price is NULL begin raiserror 20001 "Execution for this procedure is: exec proc_cutoff title_id, max_price" return end... return

Procedimientos Rótulos de modo de transacción Los procedimientos almacenados se rotulan con el modo de transacción con el cual fueron creados No se puede ejecutar una transacción en un modo diferente al del rótulo

Procedimientos sp_procxmode sp_procxmode permite ver y cambiar el modo de transacción de un procedimiento Sintaxis: sp_procxmode [ procedure_name [, {chained unchained anymode} ] ] Ejemplo: sp_procxmode proc_update_titles, unchained

Procedimientos Retorno de valores de estado A return status es un valor que indica cuándo o no un procedimiento se ha ejecutado totalmente

Procedimientos Retorno de valores de estado Values Greater than 0 Meaning No predefined meaning; available for user-detected errors 0 Successful completetion -1 through 99 System-detected error Less than 99 No predefined meaning; available for user-detected erros

Procedimientos Retorno de valores de estado Sintaxis simplificada: create proc procedure_name as statements return [return_status]

Procedimientos Captura del valor del estado de retorno Los valores de retorno se deben capturar en variables Sintaxis simplificada: [exec execute] variable = procedure_name parameter_list

Procedimientos Rollbacks no intencionales Un rollback no intencional es un rollback anidado que sin intensión deshace el trabajo en transacciones externas Proc1(Outermost tran) begin tran <statements...> if <error> begin rollback tran return end exec proc2 if <error> begin rollback tran return end <statements...> commit tran return Proc2(Nested proc) begin tran <statements...> if <error> begin rollback tran return end <statements...> commit tran return

Procedimientos Savepoints y Rollbacks anidados Usar savepoints para evitar rollbacks no intencionales batch (Outermost tran) begin tran (1) <statements...> exec proc1 if <error> rollback tran (6) else commit tran (1) Con begin tran inicia la transacción. Nivel anidamiento: 1. (6) rollback deshace todas las sentencias en proc1, proc2, y batch -or- commit hace commit a todo. proc 1 save tran abc (2) <statements...> exec proc2 if <error> rollback tran abc (5) else... (2) save tran no incrementa el nivel de anidamiento. (5) rollback regresa al punto abc. Entonces se ejecutan las subsiguientes sentencias en proc1. proc 2 save tran xyz (3) <statements...> if <error> rollback tran xyz(4) else... (3) save tran no incrementa el nivel de anidamiento. (4) rollback regresa al punto xyz. Entonces se ejecutan las subsiguientes sentencias en proc2.

Procedimientos Límite de anidamiento Los procedimientos almacenados pueden llamar otros procedimientos almacenados El máximo nivel de anidamiento es 16 La variable @@nestlevel contiene el nivel de anidamiento actual Si se excede el nivel máximo: Se abortan los procedimientos pendientes El servidor retorna un error

Planes de búsqueda Un plan de búsqueda es un conjunto ordenado de estapas que se requieren para acceder los datos, incluyendo información sobre: Si usar o no un índice El índice a usar El orden en el cual las tablas se deben encadenar Los planes de búsqueda son creados por el optimizador de búsquedas El optimizador de búsquedas usa información acerca de los objetos de base de datos para producir el plan Los planes de búsqueda creados para los procedimientos, se reutilizan Cuando se ejecuta un procedimiento almacenado, el servidor chequea el caché del procedimiento para un plan no usado Si hay un plan de búsqueda no utilizado, el servidor lo usa Si no hay un plan de búsqueda no utilizado, el servidor genera uno nuevo del árbol de búsqueda en sysprocedures

Planes de búsqueda sub-óptimos El plan de búsqueda creado para la una ejecución de un procedimiento almacenado puede que no sea el plan de búsqueda óptimo para la siguiente ejecución del procedimiento almacenado Las dos ejecuciones pueden usar parámetros de entrada muy diferentes Se pueden haber añadido nuevos índices entre las dos ejecuciones El tamaño de las tablas accesadas pueden haber cambiado significativamente entre las dos ejecuciones Hay tres formas para forzar al servidor a generar un nuevo plan de búsqueda Usar with recompile en el procedimiento Usar with recompile cuando se ejecute el procedimiento Usar sp_recompile

En un procedimiento, usar la opción with recompile para forzar al servidor a crear un nuevo plan de búsqueda cada vez que se ejecute el procedimiento Sintaxis simplificada: create proc procedure_name with recompile as statements return Procedimientos con recompile

Procedimientos con recompile Cuando se ejecute un procedimiento almacenado, usar la opción with recompile para forzar al servidor a crear un nuevo plan de búsqueda para esa ejecución del procedimiento Esta opción se puede usar cuando se ejecuta cualquier procedimiento almacenado Sintaxis simplificada: [exec execute] procedure_name with recompile

sp_recompile sp_recompile hace que cada procedimiento almacenado (y trigger) que utilice la tabla indicada se recompile la siguiente vez que él se ejecute Sintaxis: sp_recompile table_name