PROCEDIMIENTOS ALMACENADOS ING. WILER ARTURO PONCE BENITES 2018 Procedimientos Almacenados Son un conjunto de instruc
Views 67 Downloads 3 File size 294KB
PROCEDIMIENTOS ALMACENADOS ING. WILER ARTURO PONCE BENITES 2018
Procedimientos Almacenados
Son un conjunto de instrucciones de Transact-SQL que pueden aceptar y devolver parámetros proporcionados por el usuario.
Tipos de procedimientos almacenados Procedimientos Almacenados del Sistema Procedimientos Almacenados definidos por el usuario
Procedimientos Almacenados del Sistema: Generalmente están guardados en la base de datos MASTER son identificados por iniciar en SP, permiten realizar una amplia variedad de tareas. A continuación se muestra algunos procedimientos almacenados del sistema: Sp_columns Sp_column_privileges Sp_databases Sp_fkeys
Sp_pkeys Sp_tables Sp_server_info Sp_statistics
Ejemplos --Procedimiento del sistema que muestra --las columnas de la tabla país sp_columns pais --Procedimiento almacenado del sistema para mostrar los --privilegios de las columnas involucradas de la tabla pasajero Sp_column_privileges pasajero --Procedimiento almacenado del sistema que muestra --las base de datos del servidor activo. Sp_databases
--Procedimiento almacenado que muestra las características --de nuestro servidor activo sp_server_info --procedimiento almacenado que muestra donde se hace referencia --a la tabla pasajero Sp_fkeys pasajero --Procedimiento almacenado que muestra la llave primaria --de la tabla pasajero Sp_pkeys pasajero
Procedimientos Almacenados definidos por el usuario: Son procedimientos que se implementan en forma personalizada según las necesidades del usuario. Los Procedimientos Almacenados pueden tener parámetros de entrada y salida.
Procedimientos Almacenados - Sintaxis Create procedure Nombre_Procedimiento @parámetro1 [tipo dato], @parámetro2 [tipo dato], @parámetro3 [tipo dato] AS
Ejemplo 1: Implementar un procedimiento almacenado que muestre el listado de los países y su total de pasajeros. -- Evaluamos si ya existe el procedimiento almacenado Tabla Pasajero – País que -- queremos implementar, si ya existe lo eliminamos if object_id('pasajerosxpais') is not null begin drop procedure pasajerosxpais end go --Implementamos nuestro procedimiento almacenado create procedure pasajerosxpais as select pai.nombre,count(*) as [Total] from pasajero pas inner join pais pai on pas.idpais=pai.idpais group by pai.nombre go --Ejecutamos el procedimiento almacenado exec pasajerosxpais
Ejemplo 2: Implementar un procedimiento almacenado que permita mostrar los pagos de un determinado pasajero, considerar para este caso como parámetro de búsqueda el número de documento del pasajero.
Tabla Pasajero - Pais = Pago
-- Evaluamos si ya existe el procedimiento almacenado que queremos implementar, si ya existe lo eliminamos if object_id('pagosxpasajero') is not null begin drop procedure pagosxpasajero end go -- Implementamos nuestro procedimiento almacenado alter procedure pagosxpasajero @num_documento varchar(12) as select fecha,monto,tipo_comprobante,num_comprobante from pago where idpasajero= (select idpasajero from pasajero where num_documento=@num_documento) go -- Ejecutamos el procedimiento almacenado y le enviamos el parámetro de entrada exec pagosxpasajero '47715777'
Ejemplo 3: Implementar un procedimiento almacenado que permita registrar un Nuevo país, para este caso definir como parámetro de entrada todos los campos referentes a la tabla país.
Tabla: País
--Evaluamos si ya existe el procedimiento almacenado que queremos implementar, si ya existe lo eliminamos if object_id('nuevopais') is not null begin drop procedure nuevopais end go --Implementamos nuestro procedimiento almacenado create procedure nuevopais @idpais char(4), @nombre varchar(30) as insert into pais (idpais,nombre) values(@idpais,@nombre) go --Ejecutamos el procedimiento almacenado y le enviamos los parámetros de entrada exec nuevopais '0014','Dinamarca'
Ejemplo 4:
Implementar un procedimiento almacenado que retorne el total de pagos recibidos en una determinada fecha. Tabla Pago
-- Evaluamos si ya existe el procedimiento almacenado que queremos implementar, si ya existe lo eliminamos if object_id('pagosxfecha') is not null begin drop procedure pagosxfecha end go -- Implementamos nuestro procedimiento almacenado create procedure pagosxfecha @fecha date, @total money output as select @total=sum(monto) from pago where fecha=@fecha go
-- Ejecutamos el procedimiento almacenado y le enviamos los parámetros declare @t money exec pagosxfecha '2014-05-05’, @total=@t output print 'Total' + cast(@t as char(10))