You are on page 1of 16

PROCEDIMIENTO ALMACENADO

DEFINICIN

Es un programa autocontrolado escrito en lenguaje del DBMS, son almacenados como parte de la Base de Datos y sus metadatos. Los procedimientos almacenados son mdulos o rutinas que encapsulan cdigo para su reutilizacin. Un procedimiento almacenado es un objeto perteneciente a una base de datos, que contiene un conjunto de instrucciones SQL, tanto de consulta, como de manipulacin de datos, como de control de la secuencia del programa, asociados a un nombre, y que son ejecutados en conjunto. Puede contener parmetros tanto de entrada como de salida (parmetros pasados por referencia), as como devolver un valor de retorno

DEFINICIN

Puede incluir parmetros de entrada, devolver resultados tabulares o escalares y mensajes para el cliente, invocar instrucciones de lenguaje de definicin de datos (DDL) e instrucciones de lenguaje de manipulacin de datos (DML), as como devolver parmetros de salida.

FUNCIONES
Aceptar parmetros de entrada y devolver varios valores en forma de parmetros de salida al lote o al procedimiento que realiza la llamada. Contener instrucciones de programacin que realicen operaciones en la base de datos, incluidas las llamadas a otros procedimientos. Devolver un valor de estado a un lote o a un procedimiento que realiza una llamada para indicar si la operacin se ha realizado correctamente o se han producido errores (y el motivo de stos).

Una vez creado un procedimiento almacenado, se puede invocar directamente desde una aplicacin, o sustituir el nombre de una tabla o vista, por el nombre de procedimiento en clusulas SELECT. Los procedimientos almacenados pueden recibir parmetros de entrada y retornar valores a la aplicacin.

VENTAJAS

Diseo modular. Aplicaciones que acceden la misma Base de Datos pueden compartir los procedimientos almacenados, eliminando el cdigo doble y reduciendo el tamao de las aplicaciones. El fcil mantenimiento. Cuando un procedimiento se actualiza, los cambios se reflejan automticamente en todas las aplicaciones, sin la necesidad de recompilar y relinkear. Las aplicaciones son compiladas slo una vez para cada cliente. Los procedimientos almacenados son ejecutados por el servidor, no por el cliente lo que reduce el trfico en la red y mejora el performance o desempeo, especialmente para el acceso del cliente remoto. Estn almacenados en los servidores y asegurados por las medidas tomadas en la instalacin, lo que impide que los usuarios normales puedan modificarlos e incluso desconocen su existencia. Este es un elemento de gran valor en lo que a seguridad respecta.

VENTAJAS

Permiten una programacin modular. Puede crear el procedimiento una vez y llamarlo desde el programa tantas veces como desee. As, puede mejorar el mantenimiento de la aplicacin y permitir que las aplicaciones tengan acceso a la base de datos de manera uniforme. Constituyen cdigo con nombre que permite el enlace diferido. Esto proporciona un nivel de direccionamiento indirecto que facilita la evolucin del cdigo. Pueden reducir el trfico de red. Una operacin que necesite centenares de lneas de cdigo Transact-SQL puede realizarse mediante una sola instruccin que ejecute el cdigo en un procedimiento, en vez de enviar cientos de lneas de cdigo por la red.

SINTAXIS
La sintaxis de dicha instruccin es bsicamente la siguiente: CREATE PROCEDURE Nombre_del_procedimiento [Lista_de_parmetros] AS (Sentencias SQL)[RETURN [Valor]] Donde: Nombre_del_procedimiento : Identificador que determina el nombre asignado al procedimiento y que debe cumplir con la regla de definicin de identificadores establecida. Lista_de_parmetros: Parmetros definidos en el procedimiento con la siguiente sintaxis: @nombre_var Tipo_var [OUTPUT]

SINTAXIS

El smbolo @ es necesario no slo en la declaracin sino que forma parte del propio nombre. La clusula OUPUT determina que dicho parmetro ser utilizado para pasar informacin al cdigo llamador, es decir, viene a ser un parmetro pasado por referencia. Dicha lista puede contener un mximo de 255 parmetros. Sentencias_SQL Como se explic anteriormente, el cuerpo del procedimiento puede estar compuesto de cualquier tipo de instruccin SQL, a excepcin de las siguientes: CREATE VIEW CREATE DEFAULT CREATE RULE CREATE PROCEDURE CREATE TRIGGER

Entre las instrucciones que puede contener, est la llamada a otros procedimientos almacenados, los cuales podrn acceder a los objetos pertenecientes al llamador, exceptuando las tablas temporales creadas por el mismo.

RETURN [Valor]: Un procedimiento almacenado puede devolver un valor de retorno de tipo: integer, no nulo, que puede ser rescatado por el cdigo llamador para tener conocimiento del resultado del proceso de dicho procedimiento. Los valores -1 al -99 estn reservados por el sistema, as como el 0 que se interpreta como finalizado con xito. Si no se proporciona un cdigo definido por el usuario, se utilizan los del sistema. De la misma forma los definidos por el usuario tiene prioridad sobre los definidos por el sistema. En caso de producirse varios errores a lo largo de la ejecucin del mismo procedimiento, se devuelve el cdigo cuyo valor absoluto es mayor

LLAMADA DE UN PROCEDIMIENTO
ALMACENADO

La sintaxis de la llamada a un procedimiento almacenado, depende de como se halla creado dicho procedimiento.

PROCEDIMIENTO ALMACENADO SIMPLE


CREATE PROCEDURE prod_1 AS SELECT *FROM CLIENTES
LLAMADA: EXECUTE prod_1

EJEMPLO Es un procedimiento que recibe dos parmetros de entrada, correspondientes a un rango de cdigos de clientes, y devuelve el conjunto de filas de la tabla CLIENTES cuyo cdigo se encuentra en el rango determinado por los parmetros. CREATE PROCEDURE prod_2 @p_CodIni CHAR (6), @p_CodFin CHAR (6), AS SELECT * FROM CLIENTE WHERE IDCLIENTE BETWEEN @p_CodIni AND @p_CodFin

LLAMADA EXECUTE prod_2 000100, 000500

Procedimiento que recibe un parmetro de entrada y uno de salida. El parmetro de entrada corresponde a un cdigo de tipo de producto y el de salida, el nmero de productos existentes, que corresponden a dicho tipo

CREATE PROCEDURE prod_3 @p_CodTipProd CHAR (3), @p_NumProductos SMALLINT OUTPUT AS SELECT @p_NumProductos = COUNT(*) FROM PRODUCTOS WHERE IDTIPROD = @p_CodTipProd

LLAMADA:
DECLARE @p_parmsal SMALLINT EXECUTE prod_3 KBD, @p_parmsal OUTPUT

You might also like