Está en la página 1de 6

Que son procedimientos almacenados?

Un procedimiento almacenado es un conjunto de instrucciones a las que se les da un nombre, se almacena en la base de datos en la cual trabaja el usuario. Permiten agrupar y organizar tareas repetitivas que ayudan al usuario, en confiabilidad, seguridad, y sobre todo proteccion de datos cuando trabajamos desde el lado del servidor. Un procedimiento almacenado puede contener cualquier cantidad y tipo de instrucciones DML (para la manipulacin de datos, como insert, update, delete), no instrucciones DDL (de definicin de datos, como create..., drop... alter...). Para crear un procedimiento almacenado el usuario debe emplear la opcin "create procedure". La sintaxis de un procedimiento almacenado es la siguiente:
CREATE [OR REPLACE] PROCEDURE<procedure_name>[(<param1>[IN|OUT|IN OUT<type>, <param2>[IN|OUT|IN OUT]<type>, ...)] IS -- Declaracion de variables locales BEGIN -- Sentencias [EXCEPTION] -- Sentencias control de excepcion END[<procedure_name>];

El uso de OR REPLACE permite sobreescribir un procedimiento existente. Si se omite, y el procedimiento existe, se producir, un error. La sintaxis es muy parecida a la de un bloque annimo, salvo porque se reemplaza la seccion DECLARE por la secuencia PROCEDURE ... IS en la especificacin del procedimiento. Debemos especificar el tipo de datos de cada parmetro. Al especificar el tipo de dato del parmetro no debemos especificar la longitud del tipo. Los parmetros pueden ser de entrada (IN), de salida (OUT) o de entrada salida (IN OUT). El valor por defecto es IN, y se toma ese valor en caso de que no especifiquemos nada.
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;

Tambin podemos asignar un valor por defecto a los parmetros, utilizando la clausula DEFAULT o el operador de asigancin (:=) .
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;

Una vez creado y compilado el procedimiento almacenado podemos ejecutarlo. Si el sistema nos indica que el procedimiento se ha creado con errores de compilacin podemos ver estos errores de compilacin con la orden SHOW ERRORS en SQL *Plus.Existen dos formas de pasar argumentos a un procedimiento almacenado a la hora de ejecutarlo(en realidad es vlido para cualquier subprograma). Estas son: Notacin posicional: Se pasan los valores de los parmetros en el mismo orden en que el procedure los define. BEGIN Actualiza_Saldo (200501,2500); COMMIT; END; Notacin nominal: Se pasan los valores en cualquier orden nombrando Explcitamente el parmetro. BEGIN Actualiza_Saldo(cuenta => 200501,new_saldo => 2500); COMMIT; END;

HISTORIA Desde que el hombre comenz a utilizar medios digitales para almacenar su informacin comenz a enfrentarse con problemas para hacer mas prctico este proceso, es lgico pensar que desde la utilizacin de los archivos ( que son los antecesores de las bases de datos ) se les fueron integrando algunas mejoras hasta llegar a la concepcin que actualmente se tienen de base de datos, al paso del tiempo las empresas de la industria de software en especial la relacionada con las bases de datos incorporaron mecanismos como los mencionados en el seccin 2.2 hasta llegar paulatinamente a incorporar, los procedimientos almacenados. Los procedimientos almacenados no son nuevos en la industria de las bases de datos, como referencia se tiene a ORACLE, que present PL/SQL 2, su implementacin de un lenguaje procedimental para SQL, esto por el ao de 1991, SYBASE, PROSTGRESSQL Y DB2 estn entre los otros DBMS que en breve siguieron este tan socorrido lenguaje procedimental para sentencias SQL. A la publicacin de este documento es MYSQL el mas reciente poseedor de procedimientos almacenados, esto invita a algunos expertos en la materia a mencionar que con esta incorporacin este DBMS ha llegado a su mayora de edad, aunque sin aventurarse a mencionar que pudiera ser una competencia seria para los grandes en esta rama como lo son ORACLE Y SQLSERVER. Razones para la existencia de los procedimientos almacenados. Cubrir las diferentes necesidades de los usuarios de un DBMS debe de ser la filosofa a seguir de la industria de las bases de datos y este comentario es seguro que no pas desapercibido por los desarrolladores ya que la totalidad de las bases de datos estn haciendo o hicieron esfuerzos por incorporar los procedimientos almacenados a su software. Y se menciona de esta manera por que en realidad en estos tiempos en los que gran parte de la informacin del mundo se encuentra alojada en BD esto fue una necesidad, como lo pueden corroborar los captulos que continan. La tendencia de las bases de datos actualmente va encaminada a darle ms conocimiento a las bases de datos que a la aplicacin, esto quiere decir que el cliente est enterado lo menos posible de la estructura lgica de la DB, o al menos esto muestra la clara incorporacin de algunos elementos como la integridad referencial, actualizacin y eliminacin en cascada, disparadores, UDFS y ahora procedimientos almacenados, los cuales realizan labores que antes eran propias de las aplicaciones cliente.

Tipos de procedimientos almacenados. 1. Procedimiento sin parmetros. Como su nombre lo dice son procedimientos que no necesitan ningn parmetro extra para ser ejecutado Ejemplo: CREATE PROCEDURE spSumaSinParametros AS --Declaracion de variablesDECLARE

@Numero1 FLOAT,@Numero2 FLOAT,@Resultado FLOAT,@Operacion NVARCHAR(25) --Asignacion de valores iniciales SET @Numero1 = 5.55SET @Numero2 = 15 --Operacion. Nota: Se puede hacer uso de SELECT y/o SET para la asignacion de valores a las variables.SELECT @Resultado = ISNULL(@Numero1, 0) + ISNULL(@Numero2, 0)SET @Operacion = CAST(@Numero1 AS VARCHAR) + ' + ' + CAST(@Numero2 AS VARCHAR) + ' = ' + CAST(@Resultado AS VARCHAR) --Realizar un select con el resultado de la operacion. SELECT @Numero1 AS Numero1, @Numero2 AS Numero2, @Resultado AS Resultado,@Operacion AS OperacionGO 2. Procedimiento con parmetros de entrada. Como su nombre lo dice sonprocedimientos que no necesitan algn parmetro extra para ser ejecutado como unavariable de entrada. Ejemplo:

CREATE PROCEDURE spSumaConParametros @Numero1 FLOAT,@Numero2 FLOAT AS --Declaracion de variables DECLARE @Resultado FLOAT,@Operacion NVARCHAR(25) --Operacion. --Nota: Se puede hacer uso de SELECT y/o SET para la asignacion de valores a lasvariables. SELECT @Resultado = ISNULL(@Numero1, 0) + ISNULL(@Numero2, 0)SET @Operacion = CAST(@Numero1 AS VARCHAR) + ' + ' + CAST(@Numero2 ASVARCHAR) + ' = ' + CAST(@Resultado AS VARCHAR) --Realizar un select con el resultado de la operacion. SELECT @Numero1 AS Numero1, @Numero2 AS Numero2, @Resultado ASResultado, @Operacion AS OperacionGO 3. Procedimiento con parmetros de salida. Como su nombre lo dice sonprocedimientos que no necesitan algn parmetro extra para ser ejecutado conocidacomo variable de salida donde almacenar el resultado. Ejemplo: CREATE PROCEDURE spSumaConParametroDeSalida@Numero1 FLOAT,@Numero2 FLOAT,@Resultado FLOAT OUTPUT AS --Declaracion de variables DECLARE

@Operacion NVARCHAR(25) --Operacion. --Nota: Se puede hacer uso de SELECT y/o SET para la asignacion de valores a las variables. SELECT @Resultado = ISNULL(@Numero1, 0) + ISNULL(@Numero2, 0)SET @Operacion = CAST(@Numero1 AS VARCHAR) + ' + ' + CAST(@Numero2 AS VARCHAR) + ' = ' + CAST(@Resultado AS VARCHAR) --Realizar un select con el resultado de la operacin. SELECT @Numero1 AS Numero1, @Numero2 AS Numero2, @Operacion AS OperacionGO

Categoras de procedimientos almacenados En la actualidad existes cinco categoras de procedimientos almacenados, entre los que podemosmencionar: Procedimientos almacenados del sistema Procedimientos almacenados locales Procedimientos almacenados temporarios Procedimientos almacenados extendidos Procedimientos almacenados remotos. a. Procedimientos almacenados del sistema Son procedimientos propios del sistema que son almacenados en la base de datos master y sonidentificados con el prefijo sp. Entre las tareas que realizan estn la de soportar aplicacionesexternas para datos de las tablas del sistema, procedimientos para la administracin de base dedatos y funciones de seguridad b. Procedimientos almacenados locales Son usualmente almacenados en una base de datos, diseadas por el desarrollador de base dedatos para tareas comunes propias del sistema y de las necesidades del negocio, tambin sepuede usar para crear tareas personalizadas en base a procedimientos del sistema c. Procedimientos almacenados temporarios Son similares a los procedimientos almacenados locales pero existe solo hasta que se cierre laconexin que lo creo son almacenados en la base de datos TempDb.Hay tres tipos de procedimientos almacenados temporarios:Locales (tambin llamados privados), globales, y procedimientos almacenados en TempDB. Unprocedimiento almacenado temporario local siempre comienza con #, un procedimientoalmacenado temporario global siempre comienza con ##.os procedimientos almacenadostemporarios creados directamente en la TempDB son diferentes a los procedimientosalmacenados locales y globales en lo siguiente: Se pueden configurar permisos para ellos.

Existen an despus que la conexin que los cre se terminan No son removidos hasta que el SQL Server no sea apagado.

d. Procedimientos almacenados extendidos Usan un programa externo, compilado como un DLL para expandir las capacidades de unprocedimiento almacenado. La mayora de los procedimientos almacenados extendidos usan elprefijo xp_ como un convencin de nombre. Sin embargo, hay algunos procedimientosalmacenados extendidos que comienzan con el prefijo sp_, y hay algunos procedimientosalmacenados del sistema que no son procedimientos extendidos y usan el prefijo xp_. Por lotanto, no se puede depender sobre convencin de nombres para identificar procedimientosalmacenados del sistema y procedimientos almacenados extendidos. VENTAJAS Los procedimientos almacenados proporcionan ventajas de performance, un marco de trabajo, y mayores capacidades de seguridad. La mejora en el rendimiento se logra a travs de un almacenamiento local (en la base de datos), cdigo precompilado, y manejo de cachs (almacenamientos temporarios). El marco de programacin se logra a travs deconstrucciones comunes de programacin tales como parmetros de entrada/salida y reutilizacin de los procedimientos. Las capacidades de seguridad incluye encriptacin y limitaciones de privilegios que permiten mantener a los usuarios fuera de la vista de la estructura de la base de datos subyacente, mientras se los habilita a ejecutar procedimientos almacenados que actan sobre la base de datos.

También podría gustarte