Pivot y Tabla de referencia cruzada
#000012
Un procedimiento almacenado son instrucciones T-SQL almacenadas con un nombre en la base de datos.
#000017
Los procedimientos almacenados se pueden utilizar para
#000018
Devolver un conjunto de resultados, se puede incluir parámetros de entrada para especificar el filtro del conjunto resultado.Ejecutar instrucciones de programación.Devolver valores numéricos que permiten realizar acciones cuando un grupo de instrucciones se realizó con éxito o no.
#000019
Ventajas del uso de procedimientos almacenados
#000020
Reutilización del códigoEl encapsulamiento en un procedimiento es óptimo para reutilizar su código. Se elimina la necesidad de escribir el mismo código, se reducen inconsistencias en el código y permite que cualquier usuario ejecute el código aún sin tener acceso a los objetos que hace referencia.
#000021
Mayor seguridadSe pueden ejecutar SP con instrucciones que hacen referencia a objetos que los usuarios no tienen permisos. El procedimiento realiza la ejecución del código y todas las instrucciones y controla el acceso a los objetos a los que hace referencia. Esto hace mas sencillo la asignación de permisos. Se puede implementar la suplantación de usuarios usando Exexute As. Existe un nivel fuerte de encapsulamiento.
#000022
Tráfico de red reducidoUn SP se ejecuta en un único lote de código. Esto reduce el tráfico de red cliente servidor porque únicamente se envía a través de la red la llamada que ejecuta el SP. La encapsulación del código del SP permite que viaje a través de la red como un solo bloque.
#000023
Mantenimiento más sencilloSe puede trabajar en los aplicativos en base a capas, cualquier cambio en la Base de datos, hace sencillo los cambios en los procedimientos que hacen uso de los objetos cambiados en la BD.
#000024
Rendimiento mejoradoLos procedimientos almacenados se compila la primera vez que se ejecutan y crean un plan de ejecución que vuelve a usarse en posteriores ejecuciones.
#000025
Definidos por el usuarioSe crea por el usuario en las bases de datos definidas por el usuario o en las de sistema (Master, Tempdb, Model y MSDB)
#000026
Procedimientos almacenados TemporalesLos procedimientos temporales son procedimientos definidos por el usuario, estos se almacenan en tempdb. Existen dos tipos de procedimientos temporales: locales (primer caracter es #) y globales (primer caracter #). Se diferencian entre sí por los nombres, la visibilidad y la disponibilidad.Los procedimientos temporales locales tienen como primer carácter de sus nombres un solo signo de número (#); solo son visibles en la conexión actual del usuario y se eliminan cuando se cierra la conexión. Los procedimientos temporales globales presentan dos signos de número (#) antes del nombre; lo pueden usar todos los usuarios conectados, se eliminan cuando se desconectan todos los usuarios.
#000027
Procedimientos Almacenados del SistemaLos procedimientos del sistema son propios de SQL Server. Los caracteres iniciales de estos procedimientos son sp_ la cual no se recomienda para los procedimientos almacenados definidos por el usuario.
#000028
Extendidos definidos por el usuarioLos procedimientos extendidos tienen instrucciones externas en un lenguaje de programación como puede ser C. Estos procedimientos almacenados son DLL que una instancia de SQL Server puede cargar y ejecutar dinámicamente.
#000029
Eliminar un SPDrop procedure NombreProcedimientogo
#000032
Para listar los SPselect * from sys.proceduresgo
#000033
— Procedimiento para insertar un registro en la tabla Shippers— La instrucción para insertar un Shipper es:insert into Shippers (CompanyName, Phone)values (‘Tolva Couriers’,’954542452′)goEl SP para insertar Shippers se crea de la siguiente forma.create procedure spShippersInsertaNuevo(@NombreEmpresa nvarchar(40),@Fono nvarchar(24)Asinsert into Shippers (CompanyName, Phone)values (@NombreEmpresa,@Fono)goEjecutar el SP, se puede ejecutar de las siguiente formas:Execute spShippersInsertaNuevo ‘Chasqui’,’87545852′goExecute spShippersInsertaNuevo@Fono = ‘345435645’, @NombreEmpresa =’Ford’goExecute spShippersInsertaNuevo@NombreEmpresa =’Turbo XD’, @Fono = ‘8569856’go
#000035
— Procedimiento para crear una tabla con los productos de una determinada categoríaCreate procedure spCreaTablaProductosDeCategoria(@CodigoCategoria int)AsDeclare @NombreTabla nvarchar(40), @DropTablaTSQL nvarchar(100),@CrearTablaTSQL nvarchar(100)set @NombreTabla = ‘ProductosDeCategoria’+ LTRIM(STR(@CodigoCategoria)Set @DropTablaTSQL = ‘Drop Table ‘+ @NombreTablaSet @CrearTablaTSQL = ‘select * into ‘+ @NombreTabla + ‘ from Products where CategoryID = ‘+LTRIM(STR(@CodigoCategoria)if exists (select * from sys.tables where name = @NombreTabla)BeginExecute(@DropTablaTSQL)EndExecute(@CrearTablaTSQL)go
#000037
Funciones definidas por el usuario UDF
#000039