Sei sulla pagina 1di 6

Proceso de Almacenado.Son consultas que se almacenan en la B.D., las cuales aumentan la velocidad de ejecucin de consultas al estar pre-compiladas. Nota.

-Los procedimientos de almacenado a diferencia de triggers no se realizan para cada tabla, en cambio los procedimientos de almacenado son globales Nota.-Una buena idea para los procedimientos de almacenado es crearlo con un nombre explcito de la tabla para recordarlo. Se ubica en Programacin->Procedimientos de almacenado, luego al ubicarlo se le da un clic en dbo.sp_(El procedimiento creamos) @@identity agrega el ultimo valor q se est creando

Ej:
String nombre ="Jump"; int idCliente=5; String sql="insert into idCliente values("+idCliente.toString()+","++"'"+nombre+")";

Revisin Sintaxis.Create procedure nombre @parametro1 tipo dato, @parametro1 tipo dato, . . . @parmetro tipo de dato As Cuerpo

Tipo de Parmetro.Entrada: si no se eplicita, es el valor predeterminado. Salida: Output es un parmetro en el cual se retorna un resultado.

Ej: Crear un proc. Almacenado para insertar Membresas


Create procedure sp_insertarMembresia @IDMembresia int, @NombreM varchar(40), @PrecioM decimal(8,2), @CantBenefM int, @DuracionDiasM smallint As insert into Membresia values(@NombreM,@PrecioM,@CantBenefM,@DuracionDiasM) select * from Membresia

-----------------------------------------------------------------------------------------------------------------------------------

USE [Club_RecreativoBD] GO /****** Object: StoredProcedure [dbo].[sp_insertarMembresia] Date: 06/26/2012 12:50:51 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER procedure [dbo].[sp_insertarMembresia] @IDMembresia int output, @NombreM varchar(40), @PrecioM decimal(8,2), @CantBenefM int, @DuracionDiasM smallint As

Script

Es un parmetro de tipo entero y de salida


USE [Club_RecreativoBD] GO DECLARE EXEC @return_value int

@return_value = [dbo].[sp_insertarMembresia] @IDMembresia = 0, @NombreM = N'JJJ', @PrecioM = 100, @CantBenefM = 2, @DuracionDiasM = 350 'Return Value' = @return_value

SELECT GO

Hasta ai sin modificar

USE [Club_RecreativoBD]

GO /****** Object: StoredProcedure [dbo].[sp_insertarMembresia] Date: 06/26/2012 12:56:04 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER procedure [dbo].[sp_insertarMembresia] @IDMembresia int output, @NombreM varchar(40), @PrecioM decimal(8,2), @CantBenefM int, @DuracionDiasM smallint As insert into Membresia values(@NombreM,@PrecioM,@CantBenefM,@DuracionDiasM) set @IDMembresia=@@IDENTITY

Script

Y tiene q salir el valor correspondiente y no cero como al principio.

Proc. Almacenados: Variables locales al Proceso.Para declarar variables se emplea la palabra reservada Declare @Nombre Variable TipoDato
Ej:
Declare @Total numeric (10,2),

Declare @Cantidad int, Declare @Fecha Date

Asignar Valores a las Variables.Ej:


Set @Total =10 Set @Cantidad = @Cantidad+1

Estructura Condicional.IF Condicion Begin End Else Begin End

Se puede anidar
IF Condicion Begin IF Condicion Begin End End

Bucles:
Para tareas repetitivas se emplea la estructura While. Sintaxis
While expresionLogica Begin End

Ej:
Declare @i int Declare @N int Set @i = 1 Set @N = 10 While @i <= @N Begin

Print @i Set @i = @i+1 End

Cursores:
Un cursor en SQL Server, es como una tabla Temporal que almacena datos resultantes de una consulta.

Declaracin de Cursores:
Sintaxis
Declare NombreCursor SCROLL Cursor(SCROLL Opcional.) For Sentencia Sql

SCROLL: Permite hacer operaciones: Next, Prior, First, Last Si no se emplea SCROLL solo podemos avanzar con Next.

Para abrir un cursor


Open NombreCursor

Para Recorrer un cursor


Fetch {Next|Prior|First|Last} From NombreCursor

Cerrar el Cursor
Close NombreCursor

Liberar el Cursor
DEALLOCATE NombreCursor

Para recorrer el cursor en un bucle While empleamos la variable de sistema.


@@FETCH_STATUS

El cual tiene el valor cero(0) si no se ha llegado al final del cursor. Ej:


While @@FETCH_STATUS = 0 Begin Fetch Next From NombreCursor

End

Potrebbero piacerti anche