Sunteți pe pagina 1din 3

Create TRIGGER D_Producto_Aadir

ON Producto
For INSERT
AS
DECLARE @nuevo_valor varchar(200)
set @nuevo_valor='Codigo:'+ (SELECT codigo from inserted)
set @nuevo_valor+='**Descripcion:'+(SELECT descripcion from inserted)
set @nuevo_valor+='**Unidades:'+(SELECT unidades from inserted)
set @nuevo_valor+='**Precio:'+(SELECT cast (precio as varchar) from inserted)
set @nuevo_valor+='**Ult Fecha Adq:'+(SELECT cast (ult_fecha_adq as varchar) from
inserted)
set @nuevo_valor+='**Categoria:'+(SELECT categoria from inserted)

BEGIN TRANSACTION
INSERT INTO Historia(tabla,tipooper,nuevo_valor) values ('Producto','A',@nuevo_valor)

IF @@ERROR<>0
ROLLBACK TRANSACTION
ELSE
COMMIT TRANSACTION

drop TRIGGER D_Producto_Modif


Create TRIGGER D_Producto_Modif
ON Producto
For UPDATE
AS
DECLARE @nuevo_valor varchar(200),@anterior_valor varchar(200)
SELECT @anterior_valor='Codigo:'+(SELECT codigo from deleted)
set @nuevo_valor=''
IF UPDATE(descripcion)
BEGIN
SELECT @anterior_valor+='**Descripcion:'+(SELECT descripcion from deleted)
SELECT @nuevo_valor+='**Descripcion:'+(SELECT descripcion from inserted)
END

IF UPDATE(unidades)
BEGIN
SELECT @anterior_valor+='**Unidades:'+(SELECT unidades from deleted)
SELECT @nuevo_valor+='**Unidades:'+(SELECT unidades from inserted)
END

IF UPDATE(precio)
BEGIN
SELECT @anterior_valor+='**Precio:'+(SELECT cast (precio as varchar) from
deleted)
SELECT @nuevo_valor+='**Precio:'+(SELECT cast (precio as varchar) from inserted)
END

IF UPDATE(ult_fecha_adq)
BEGIN
SELECT @anterior_valor+='**Ult Fecha Adq:'+(SELECT cast (ult_fecha_adq as
varchar) from deleted)
SELECT @nuevo_valor+='**Ult Fecha Adq:'+(SELECT cast (ult_fecha_adq as
varchar) from inserted)
END

IF UPDATE(categoria)
BEGIN
SELECT @anterior_valor+='**Categoria:'+(SELECT categoria from deleted)
SELECT @nuevo_valor+='**Categoria:'+(SELECT categoria from inserted)
END

BEGIN TRANSACTION
INSERT INTO Historia(tabla,tipooper,valor_anterior,nuevo_valor) values
('Producto','M',@anterior_valor,@nuevo_valor)

IF @@ERROR<>0
ROLLBACK TRANSACTION
ELSE
COMMIT TRANSACTION

CURSORES

Create Procedure paListaClientes


AS
DECLARE @Codigo NCHAR(5) ,@Nombre NVARCHAR(80),@Direccion
NVARCHAR(80),@Ciudad NVARCHAR(20),@CiudadActual NVARCHAR(20)
DECLARE @total_ciudad int,@total_clientes int
DECLARE Cur_Clientes CURSOR FOR SELECT CustomerID,CompanyName,Address,City from
Customers Order By City

OPEN Cur_Clientes
FETCH NEXT FROM Cur_Clientes INTO @Codigo,@Nombre,@Direccion,@Ciudad

PRINT 'Relacion de clientes por ciudad'


PRINT 'Ciudad :'+@Ciudad
PRINT ' Codigo Nombre/Razon Social Direccion'
PRINT replicate('=',70)
set @CiudadActual=@Ciudad
set @total_ciudad=0
set @total_clientes=0
While @@FETCH_STATUS=0
BEGIN
IF @CiudadActual<>@Ciudad
BEGIN
PRINT replicate('=',20)
PRINT 'Total :'+LTRIM(str(@total_ciudad))
PRINT 'Ciudad :'+@Ciudad
PRINT ' Codigo Nombre/Razon Social
Direccion'
PRINT replicate('=',70)
set @CiudadActual=@Ciudad
set @total_ciudad=0
END
PRINT @Codigo+Space(5)+@Nombre+SPACE(5)+@Direccion
FETCH NEXT FROM Cur_Clientes INTO
@Codigo,@Nombre,@Direccion,@Ciudad
set @total_ciudad=@total_ciudad+1
set @total_clientes=@total_clientes+1
END
PRINT replicate('=',20)
PRINT 'Total de Clientes :'+LTRIM(str(@total_clientes))

CLOSE Cur_Clientes
DEALLOCATE Cur_Clientes

S-ar putea să vă placă și