Está en la página 1de 6

ALTER PROCEDURE [dbo].

[sp_ej1IF]

AS
BEGIN
DECLARE @Npisos int
SELECT @Npisos=count(*)
FROM tbltienepisoen
WHERE codciudad = 37
IF @Npisos < 5
SELECT @Npisos, 'hay menos de 5'
ELSE
SELECT @Npisos, 'mas de 5'
END
----------------------------------------------------------------------
ALTER PROCEDURE [dbo].[eje2casa]
AS
DECLARE @Contador int
SET @Contador=0
BEGIN
WHILE(@Contador<=10)
BEGIN
SELECT 'estamos en '+ cast (@contador as char(2))
SET @Contador=@Contador+1
END
END

ALTER PROCEDURE [dbo].[sp_ej3WhileASCII]

AS
BEGIN
DECLARE @n int
SET @n=30
WHILE (@n<=255)
BEGIN
SELECT cast(@n as char(3)) +'='+ char(@n)
SET @n=@n+1
END
END

ALTER PROCEDURE [dbo].[sp_ej4WhileCreattblASCII]


AS
BEGIN
IF NOT EXISTs (SELECT * FROM sys.objects WHERE
name='tblASCII')
BEGIN
CREATE TABLE tblASCII
(numero int,
caracter char)
SET nocount ON
DECLARE @n int

SET @n=1
WHILE @n<=255
BEGIN
INSERT INTO tblASCII VALUES
(@n,char(@n))
SET @n=@n+1
END
END
ELSE
SELECT('existe')
END

ALTER PROCEDURE [dbo].[sp_ej5WhileDeletrea]

AS
BEGIN
DECLARE @posicion int,
@cadena char(10),
@c char(1)
SET NOCOUNT ON
SET @cadena='salamanca'
SET @posicion=1
WHILE(@posicion<=datalength(@cadena))
BEGIN
SET @c=substring(@cadena,@posicion,1)
SELECT @c, ASCII(@c)
SET @posicion=@posicion+1
END

END

ALTER PROCEDURE [dbo].[pisosentredosvalores]


@valor1 int,
@valor2 int
AS
BEGIN
SELECT *
FROM tbltienepisoen
WHERE valor>=@valor1 and valor<=@valor2
END

CREATE PROCEDURE speje2casa


@dni int,
@codciudad int,
@valor int
AS
BEGIN
INSERT INTO tbltienepisoen values(@dni,@codciudad,@valor)
END
GO

ALTER PROCEDURE [dbo].[insertaentbltienepisoen]

@dni int,
@codciudad int,
@valor int
AS
BEGIN
DECLARE @nerror int;
INSERT INTO tbltienepisoen VALUES (@dni,@codciudad,@valor)
SET @nerror=@@error
IF @nerror<>0
SELECT @nerror as 'Error detectado'
ELSE
SELECT @@identity as Ultimograbado
END
ALTER PROCEDURE [dbo].[sp_4]
@CODCIUDAD INT,
@VALOR INT
AS
BEGIN
declare @N INT

IF EXISTS(SELECT * FROM TBLTIENEPISOEN WHERE


CODCIUDAD=@CODCIUDAD)
BEGIN
SELECT * FROM TBLTIENEPISOEN WHERE
CODCIUDAD=@CODCIUDAD
UPDATE TBLTIENEPISOEN SET VALOR=@VALOR+VALOR WHERE
CODCIUDAD=@CODCIUDAD
SET @N=@@ROWCOUNT
SELECT * FROM TBLTIENEPISOEN WHERE
CODCIUDAD=@CODCIUDAD
END
ELSE
SELECT CAST (@CODCIUDAD AS CHAR(7))+ 'NO EXISTE'
SELECT CAST (@N AS CHAR (3))+ 'FILAS AFECTADAS'

END

ALTER PROCEDURE speje5casa


@CODCIUDAD INT,
@VALOR INT,
@DNI int
AS
BEGIN
declare @N INT

IF EXISTS(select * from tblNombres where DNI=@DNI)


BEGIN
IF EXISTS(SELECT * FROM TBLTIENEPISOEN WHERE
CODCIUDAD=@CODCIUDAD)
BEGIN
SELECT * FROM TBLTIENEPISOEN WHERE
CODCIUDAD=@CODCIUDAD
INSERT INTO TBLTIENEPISOEN values
(@DNI,@CODCIUDAD,@VALOR)
SET @N=@@ROWCOUNT
SELECT * FROM TBLTIENEPISOEN WHERE
CODCIUDAD=@CODCIUDAD
END
ELSE
SELECT CAST (@CODCIUDAD AS CHAR(7))+ 'ESE CODIGO
CIUDAD NO EXISTE'
END
ELSE
SELECT CAST (@DNI AS CHAR(7))+ 'ESE DNI NO EXISTE'

SELECT CAST (@N AS CHAR (3))+ 'FILAS AFECTADAS'

END
CREATE TRIGGER tr_TituloLibros
ON tblLibros
AFTER UPDATE
AS
BEGIN
IF update(Titulo)
BEGIN
rollback tran
raiserror('No se puede modificar el titulo de los
libros',16,1)
END
IF update(Descatalogado)
BEGIN
select * from deleted
IF (@@rowcount>1)
BEGIN
rollback tran
raiserror('Los cambios en el campo
descatalogado deben ser de 1 en 1',16,1)
END
END
END
--------------------------------------------------------------------
ALTER TRIGGER [dbo].[tr__controlAutores]
ON [dbo].[tblAutores]
AFTER INSERT,DELETE,UPDATE
AS
BEGIN
IF EXISTS(select * from deleted) AND EXISTS(select * from
inserted) --si son las dos (update)
BEGIN
INSERT INTO tblHistoricoAutores
(accion,fecha,nombre,apellidos) select 'actualizado (registro
anterior)',getdate(),nombre,apellidos FROM DELETED;
INSERT INTO tblHistoricoAutores
(accion,fecha,nombre,apellidos) select 'actualizado (registro
nuevo)',getdate(),nombre,apellidos FROM INSERTED;
END
ELSE
BEGIN
IF EXISTS(select * from deleted)--si es tabla delete
BEGIN
INSERT INTO tblHistoricoAutores
(accion,fecha,nombre,apellidos) select
'Borrado',getdate(),nombre,apellidos FROM DELETED
END
ELSE
BEGIN
IF EXISTS(select * from inserted)--si es
tabla insert
BEGIN
INSERT INTO
tblHistoricoAutores (accion,fecha,nombre,apellidos) select 'Nuevo
registro',getdate(),nombre,apellidos FROM INSERTED
END
END
END
END

ALTER PROCEDURE [dbo].[sp_DescatalogaLibro]


@ISBN nchar(10)
AS
BEGIN
DECLARE @estado bit;
if exists (select * from tblLibros where isbn=@isbn)
begin
select @estado=Descatalogado from tblLibros where
isbn=@isbn
if (@estado='false')
update tbllibros set
Descatalogado='true',FechaDescatalogacion=getdate() where isbn=@isbn
else
select 'ya esta descatalogado' as error
end
else
select 'no existe ese isbn' as error
END

ALTER PROCEDURE [dbo].[sp_InsertaAutor]


@Nombre nvarchar(20),
@Apellidos nvarchar(50),
@FechaNacimiento datetime
AS
BEGIN
begin try
if (len(@Nombre)=0 and len(@Apellidos)=0)
raiserror('El nombre y apellidos no puede estar en
blanco',16,1)
insert into tblAutores values
(@Nombre,@Apellidos,@FechaNacimiento)
select 'ultimo grabado' + cast(@@identity as char(4))
end try
begin catch
print error_message()
end catch

END

ALTER FUNCTION [dbo].[fn_NumAutoresLibro] escalar


(
@ISBN nchar(10)
)
RETURNS int
AS
BEGIN
declare @numero int
if exists (select * from tblautoreslibros where isbn=@isbn)
select @numero=count(*) from tblautoreslibros where
isbn=@isbn group by isbn
else
set @numero=-1
return @numero
END

ALTER FUNCTION [dbo].[fn_CumplenEsteMes]


(

)
RETURNS TABLE
AS
RETURN
(
select * from tblautores where
month(fechanacimiento)=month(getdate())
)

ALTER PROCEDURE [dbo].[sp_controlStockLibros]


@ISBN char(10),
@cantidad int

AS
DECLARE @descatalogado bit,
@saldo int
BEGIN
INSERT INTO tblControlPedidos values(@ISBN,@cantidad,getdate())
BEGIN TRAN
BEGIN TRY
IF NOT EXISTS(select * from tblLibros where ISBN=@ISBN)
BEGIN
raiserror('El libro no existe',16,1)
END
SELECT @descatalogado=Descatalogado FROM tblLibros WHERE
ISBN=@ISBN
IF(@descatalogado='true')
BEGIN
raiserror('El libro ya esta
descatalogado',16,1)
END
SELECT @saldo=Stock FROM tblLibros WHERE ISBN=@ISBN
IF(@saldo<@cantidad)
BEGIN
raiserror('No hay stock suficiente',16,1)
END
ELSE
UPDATE tblLibros SET Stock=Stock-@cantidad WHERE
ISBN=@ISBN
IF(@@error<>0)
BEGIN
raiserror('Error al actualizar',16,1)
END
COMMIT TRAN
END TRY

BEGIN CATCH
ROLLBACK TRAN
INSERT INTO tblPedidosErroneos
values(Error_Message(),getdate(),@ISBN)
END CATCH

END

También podría gustarte