Download uniandes UNIVERSIDAD REGIONAL AUTÓNOMA DE LOS ANDES
Document related concepts
Transcript
UNIVERSIDAD REGIONAL AUTÓNOMA DE LOS ANDES UNIANDES SANTO DOMINGO FACULTAD DE Sistemas Mercantiles ESCUELA DE Sistemas MÓDULO Desarrollo de Aplicaciones Cliente-Servidor II TEMA: PROCEDIMIENTOS ALMACENADOS AUTOR: Raúl Yépez, Edison Jaya TUTOR: Ing. Javier Ulloa FECHA: 5 de Diciembre del 2011 PERIODO NOVIEMBRE – ABRIL 2012 1. INTRODUCCIÓN 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. Al crear un procedimiento almacenado, las instrucciones que contiene se analizan para verificar si son correctas sintácticamente. Si se encuentra algún error, el procedimiento se compila, pero aparece un mensaje "con advertencias" que indica tal situación. Un procedimiento almacenado se invoca llamándolo. En primer lugar se deben tipear y probar las instrucciones que se incluyen en el procedimiento almacenado, luego, si se obtiene el resultado esperado, se crea el procedimiento. Los procedimientos almacenados pueden hacer referencia a tablas, vistas, a funciones definidas por el usuario, a otros procedimientos almacenados. Un procedimiento almacenado pueden incluir cualquier cantidad y tipo de instrucciones DML (de manipulación de datos, como insert, update, delete), no instrucciones DDL (de definición de datos, como create..., drop... alter...). Para crear un procedimiento almacenado empleamos la instrucción "create procedure". La sintaxis básica parcial es: Saed create or replace procedure NOMBREPROCEDIMIENTO as begin INSTRUCCIONES end; 2. OBJETIVOS 2.1. GENERAL Con esta investigación se puede saber las definiciones y el uso correcto de los procedimientos almacenados ya que la correcta utilización de estos servirá a lo largo de la materia y nuestra carrera. 2.2. ESPECÍFICOS a) Explicar cuáles son las ventajas y desventajas de usar un procedimiento almacenado. b) Dar ejemplos de algunos procedimientos almacenados. c) Aprender correctamente su sintaxis para su correcta utilización. 3. FUNDAMENTACIÓN CIENTÍFICA Procedimiento Almacenado.- Es un módulo o rutina que encapsulan código para su reutilización. Saed BDD.- Base de datos. Es un conjunto de datos pertenecientes a un mismo contexto y almacenados sistemáticamente para su posterior uso. DLL.- Biblioteca de Enlace Dinámico. Los archivos con código ejecutable que se cargan bajo demanda de un programa por parte del sistema operativo. DML.- Lenguaje de Manipulación de Datos. Es un lenguaje proporcionado por el sistema de gestión de base de datos que permite a los usuarios de la misma llevar a cabo las tareas de consulta o manipulación de los datos, organizados por el modelo de datos adecuado. DDL.- Lenguaje de Definición de Datos. Es un lenguaje proporcionado por el sistema de gestión de base de datos que permite a los usuarios de la misma llevar a cabo las tareas de definición de las estructuras que almacenarán los datos así como de los procedimientos o funciones que permitan consultarlos. PL-SQL.- Procedural Language/Structured Query Language. En un entorno de base de datos los programadores pueden construir bloques PL/SQL para utilizarlos como procedimientos o funciones, o bien pueden escribir estos bloques como parte de scripts SQL*Plus. Los programas o paquetes de PL/SQL se pueden almacenar en la base de datos como otro objeto, y todos los usuarios que estén autorizados tienen acceso a estos paquetes. Los programas se ejecutan en el servidor para ahorrar recursos a los clientes. Saed 4. DESARROLLO Procedimientos almacenados 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. Uso Los usos típicos de los procedimientos almacenados se aplican en la validación de datos, integrados dentro de la estructura del banco de datos. Los procedimientos almacenados usados con tal propósito se llaman comúnmente disparadores, o triggers. Otro uso común es la encapsulación de un API para un proceso complejo o grande que podría requerir la ejecución de varias consultas SQL, tales como la manipulación de un dataset enorme para producir un resultado resumido. También pueden ser usados para el control de gestión de operaciones, y ejecutar procedimientos almacenados dentro de una transacción de tal manera que las transacciones sean efectivamente transparentes para ellos. Implementación Estos procedimientos, se usan a menudo, pero no siempre, para realizar consultas SQL sobre los objetos del banco de datos de una manera abstracta, desde el punto de vista del cliente de Saed la aplicación. Un procedimiento almacenado permite agrupar en forma exclusiva parte de algo específico que se desee realizar o, mejor dicho, el SQL apropiado para dicha acción. Ventajas - La ventaja de un procedimiento almacenado, en respuesta a una petición de usuario, está directamente bajo el control del motor del manejador de bases de datos. - posee acceso directo a los datos que necesita manipular y sólo necesita enviar sus resultados de regreso al usuario. Desventajas Una posible desventaja es que en los procedimientos almacenados tenemos frecuentemente tanto SQL estándar como utilidades dependientes del fabricante de la base de datos, con lo que se resta portabilidad. Sintaxis CREATE [OR REPLACE] PROCEDURE <procedure_name> [(<param1> [IN|OUT|IN OUT] <type>, <param2> [IN|OUT|IN OUT] <type>, ...)] IS -- Declaración de variables locales BEGIN -- Sentencias [EXCEPTION] -- Sentencias control de excepción END [<procedure_name>]; Saed Ejemplos CREATE OR REPLACE PROCEDURE Actualiza_Saldo(cuenta NUMBER, new_saldo NUMBER) IS -- Declaracion de variables locales BEGIN -- Sentencias UPDATE SALDOS_CUENTAS SET SALDO = new_saldo, FX_ACTUALIZACION = SYSDATE WHERE CO_CUENTA = cuenta; END Actualiza_Saldo; CREATE OR REPLACE PROCEDURE Actualiza_Saldo(cuenta NUMBER, new_saldo NUMBER DEFAULT 10 ) IS -- Declaracion de variables locales BEGIN -- Sentencias UPDATE SALDOS_CUENTAS SET SALDO = new_saldo, FX_ACTUALIZACION = SYSDATE WHERE CO_CUENTA = cuenta; END Actualiza_Saldo; CREATE PROCEDURE spEjecutar @Codigo VARCHAR(10) AS BEGIN SELECT Codigo, Nombre FROM Tabla WHERE Codigo = @Codigo END GO Saed CREATE PROCEDURE spEjecutar @Codigo VARCHAR(10), @Nombre VARCHAR(100) OUT AS BEGIN SELECT @Nombre = Nombre FROM Tabla WHERE Codigo = @Codigo END GO CREATE PROCEDURE autos(IN velocidad INT,IN marca VARCHAR(50)) BEGIN IF velocidad < 120 THEN INSERT INTO familiares VALUES(velocidad,marca); ELSE INSERT INTO deportivos VALUES(velocidad,marca); END IF; END; Tipos de Procedimientos Almacenados 1. Procedimientos almacenados definidos por el usuario Los procedimientos almacenados son módulos o rutinas que encapsulan código para su reutilización. 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. Transact-SQL.- Es una colección guardada de instrucciones Transact-SQL que puede tomar y devolver los parámetros proporcionados por el usuario. Saed CLR.- Un procedimiento almacenado CLR es una referencia a un método Common Language Runtime (CLR) de Microsoft.NET Framework que puede aceptar y devolver parámetros suministrados por el usuario. 2. Procedimientos almacenados extendidos Permiten crear sus propias rutinas externas en un lenguaje de programación como pueda ser C. La integración CLR es una alternativa más consolidada y segura para escribir procedimientos almacenados extendidos. 3. Procedimientos almacenados del sistema Se almacenan físicamente en la Base De Datos “Resource” e incluyen el prefijo “sp_”. Los procedimientos almacenados del sistema aparecen de forma lógica en el esquema “sys” de cada base de datos definida por el usuario y el sistema. 5. CONCLUSIONES Fueron varias las observaciones que se han realizado durante esta investigación y se ha aprendido cada uno de los conceptos, funciones y usos correctos de los procedimientos almacenados que destacan la reutilización del código y la aplicación de mayor seguridad en un sistema. Es necesario realizar una observación a cada una de las sintaxis que se pueden realizar con los procedimientos almacenados ya que su aprendizaje facilitaría de muchas formas al programador. Saed 6. BIBLIOGRAFÍA http://msmvps.com/blogs/jvargas/archive/2008/09/19/como-trabajar-con-procedimientosalmacenados.aspx http://msdn.microsoft.com/es-es/library/ms187644.aspx http://es.wikipedia.org/wiki/Lenguaje_de_definici%C3%B3n_de_datos http://dev.mysql.com/doc/refman/5.0/es/stored-procedures.html http://www.devjoker.com/contenidos/Tutorial-PLSQL/52/Procedimientos-almacenados-enPLSQL.aspx http://es.wikipedia.org/wiki/Lenguaje_de_Manipulaci%C3%B3n_de_Datos http://www.bit-util.com/mysql/stored-procedures.html http://es.wikipedia.org/wiki/Biblioteca_de_enlace_din%C3%A1mico http://www.oracleya.com.ar/temarios/descripcion.php?cod=250&punto=92 http://es.wikipedia.org/wiki/Base_de_datos Saed