You are on page 1of 12

ALTER PROCEDURE [dbo].

[sp_insertaalu]
@nalu int,
@nombre char,
@nerror int output
AS
BEGIN
IF exists (select * from tblalumnos where nalumno=@nalu)
begin
set @nerror=-1
--set @nerror=@@error
end

else
begin
insert into tblalumnos (nalumno, nombre) values
(@nalu,@nombre)
set @nerror=@@error
end
END

----------------------------------------------------------------------
ALTER PROCEDURE [dbo].[sp_insertaalu2]
@nalu int,
@nombre char,
@nerror int output
AS
BEGIN
IF exists (select * from tblalumnos where nalumno=@nalu)
begin
insert into tblalumnos (nalumno, nombre) values
(@nalu,@nombre)
set @nerror=@@error
end
else
begin
set @nerror=@@error
end
END

----------------------------------------------------------------------------------------------------------
ALTER PROCEDURE [dbo].[sp_insertaFalta2]

@Nalumno int,
@IDModulo int,
@fecha datetime,
@NFaltas int
AS
BEGIN
IF NOT EXISTS (SELECT * FROM tblfaltas WHERE @fecha=fecha)
begin
IF (@IDModulo<>3 OR @IDModulo<>4 AND(@NFaltas=1))
begin
INSERT INTO tblfaltas
(nalumno,idmodulo,fecha,nfaltas )
values
(@Nalumno,@IDModulo,@fecha,@NFaltas)
IF(@@error<>0)
raiserror('-3',16,1)
end
ELSE
raiserror('-2',16,1)
end
ELSE

raiserror('-1',16,1)
END

----------------------------------------------------------------------
ALTER PROCEDURE [dbo].[sp_insertanota2]

@Nalumno int,
@IDModulo int,
@Nota int
AS
BEGIN
IF EXISTS (SELECT * FROM tblalumnos WHERE @Nalumno=nalumno)
begin
IF EXISTS (SELECT * FROM tblmodulos WHERE
@IDModulo=idmodulo)
begin
IF(@nota>=1 AND @nota<=10)
INSERT INTO tblnotas
(nalumno,idmodulo,nota) values (@Nalumno,@IDModulo,@Nota)
end
ELSE
raiserror('IDModulo no existe',16,1)
end
ELSE

raiserror('Nalumno ya esta repetido',16,1)


END
----------------------------------------------------------------------------
ALTER FUNCTION [dbo].[fn_Faltas]
(
@mes int,
@codmod int
)
RETURNS TABLE
AS
RETURN
(
SELECT Nombre, Faltas
FROM tblAlumnos INNER JOIN
(
SELECT SUM(NFALTAS) AS FALTAS, NAlumno
FROM tblFaltas
WHERE @MES=MONTH(FECHA) AND @CODMOD=IDModulo
GROUP BY NALUMNO) AS AUX
ON tblAlumnos.NAlumno=AUX.NAlumno
)
-----------------------------------------------------------------------------
ALTER TRIGGER [dbo].[historicoalumnos]
ON [dbo].[tblalumnos]
AFTER DELETE,UPDATE
AS
BEGIN
INSERT INTO tblhistoricoalumnos(nalumno,fechadelcambio)
select nalumno,getdate() FROM DELETED
END
----------------------------------------------------------------------------------------------
ALTER TRIGGER [dbo].[historicoalumnos2]
ON [dbo].[tblalumnos]
AFTER DELETE,UPDATE
AS
BEGIN
SET NOCOUNT ON;
IF NOT EXISTS (select * from INSERTED)--Si es delete
INSERT INTO tblhistoricoalumnos2 SELECT
nalumno,nombre,'borrado',getdate() FROM DELETED
IF EXISTS (select * from INSERTED) AND EXISTS (select * from
DELETED)--Si es update
begin
INSERT INTO tblhistoricoalumnos2

SELECT
deleted.nalumno,deleted.nombre,inserted.nombre,getdate()
FROM DELETED INNER JOIN INSERTED ON
deleted.nalumno=inserted.nalumno
end

END
-----------------------------------------------------------------------------
ALTER TRIGGER [dbo].[imposiblecambiarnotas]
ON [dbo].[tblnotas]
AFTER DELETE,UPDATE
AS
BEGIN
SELECT 'No se puede borrar'
SET NOCOUNT ON;

ROLLBACK TRAN
END
-----------------------------------------------------------------------------
ALTER TRIGGER [dbo].[imposibleborrar]
ON [dbo].[tblcuentascorrientes]
AFTER UPDATE
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

SELECT 'IMPOSIBLE MODIFICAR NADA DE ESTE REGISTRO'


ROLLBACK TRAN

END
-----------------------------------------------------------------------------
ALTER PROCEDURE [dbo].[traspaso]
@ccsacar int,
@ccmeter int,
@cantidad decimal(12,2)
AS
BEGIN
SELECT * FROM tblcuentascorrientes
UPDATE tblcuentascorrientes SET saldo=saldo-@cantidad where
cc=@ccsacar
UPDATE tblcuentascorrientes SET saldo=saldo+@cantidad where
cc=@ccmeter
SELECT * FROM tblcuentascorrientes
END
ALTER PROCEDURE [dbo].[traspaso1a]
@ccsacar int,
@ccmeter int,
@cantidad decimal(12,2)
AS
BEGIN
DECLARE @saldo decimal(12,2)

IF EXISTS( SELECT * FROM tblcuentascorrientes WHERE cc=@ccsacar)


BEGIN
SELECT @saldo=saldo from tblcuentascorrientes WHERE
cc=@ccsacar
IF (@saldo>=@cantidad)
BEGIN
IF exists( SELECT * FROM
tblcuentascorrientes WHERE cc=@ccmeter)
BEGIN
SELECT * FROM
tblcuentascorrientes
UPDATE tblcuentascorrientes
SET saldo=saldo-@cantidad where cc=@ccsacar
UPDATE tblcuentascorrientes
SET saldo=saldo+@cantidad where cc=@ccmeter
SELECT * FROM
tblcuentascorrientes
END
ELSE
PRINT 'NO EXISTE LA CUENTA DESTINO'
END
ELSE
SELECT 'NO HAY SALDO SUFICIENTE'
END
ELSE
SELECT 'NO EXISTE LA CUENTA ORIGEN'

END
ALTER PROCEDURE [dbo].[traspaso1b]
@ccsacar int,
@ccmeter int,
@cantidad decimal(12,2)
AS
BEGIN
DECLARE @saldoactual decimal (12,2)
SELECT * FROM tblcuentascorrientes
BEGIN TRAN
BEGIN TRY
UPDATE tblcuentascorrientes SET saldo=saldo-
@cantidad where cc=@ccsacar
IF @@rowcount=0
begin
raiserror('la cuenta de origen no
existe',16,1)
end
SELECT @saldoactual=saldo from
tblcuentascorrientes where cc=@ccsacar
IF(@saldoactual<0)
begin
raiserror('la cuenta de origen no
tiene saldo suficiente',16,1)
end

UPDATE tblcuentascorrientes SET


saldo=saldo+@cantidad where cc=@ccmeter
IF @@rowcount=0 --si no existe el cliente
BEGIN
raiserror('error en la cuenta de
destino',16,1)
END
COMMIT TRAN
END TRY
BEGIN CATCH --Por si hay errores
select ERROR_MESSAGE()
ROLLBACK TRAN
END CATCH
SELECT * FROM tblcuentascorrientes --RESULTADO
END
ALTER PROCEDURE [dbo].[traspaso2]
@ccorigen int,
@ccdestino int,
@cantidad decimal(12,2)
AS
BEGIN
DECLARE @saldoactual decimal (12,2)
DECLARE @saldoorigen decimal (12,2)
DECLARE @saldodestino decimal (12,2)

SELECT * FROM tblcuentascorrientes


INSERT INTO
tblcontroltraspasos(ccorigen,ccdestino,importe,fechahora)
VALUES (@ccorigen,@ccdestino,@cantidad,getdate())

BEGIN TRAN
BEGIN TRY
SELECT @saldoorigen=saldo From TBLCUENTASCORRIENTES
WHERE cc=@ccorigen
UPDATE tblcuentascorrientes SET saldo=saldo-
@cantidad where cc=@ccorigen
IF @@rowcount=0
begin
raiserror('la cuenta de origen no
existe',16,1);
end
SELECT @saldoactual=saldo from
tblcuentascorrientes where cc=@ccorigen
IF(@saldoactual<0)
begin
raiserror('la cuenta de origen no
tiene saldo suficiente',16,1);
end
SELECT @saldodestino=saldo From TBLCUENTASCORRIENTES
WHERE cc=@ccdestino
UPDATE tblcuentascorrientes SET
saldo=saldo+@cantidad where cc=@ccdestino
IF @@rowcount=0 --si no existe el cliente
BEGIN
raiserror('error en la cuenta de
destino',16,1);
END

INSERT INTO tblmovimientos


(cc,saldoanterior,saldoactual,importemovido,fecha)
VALUES
(@ccorigen,@saldoorigen,@saldoorigen-@cantidad,-@cantidad,getdate());
INSERT INTO tblmovimientos
(cc,saldoanterior,saldoactual,importemovido,fecha)
VALUES
(@ccdestino,@saldodestino,@saldodestino+@cantidad,@cantidad,getdate())
;
COMMIT TRAN

END TRY
BEGIN CATCH --Por si hay errores
select ERROR_MESSAGE()
ROLLBACK TRAN
ALTER PROCEDURE [dbo].[sp_ej2While10]

AS
BEGIN
DECLARE @n int
SET @n=1
WHILE (@n<=10)
BEGIN
SELECT 'estamos en:' + cast(@n as char(1))
SET @n=@n+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('no 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].[ERRORMENSAGE]


AS
SELECT
ERROR_NUMBER() AS ErrorNumber
,ERROR_SEVERITY() AS ErrorSeverity
,ERROR_STATE() AS ErrorState
,ERROR_PROCEDURE() AS ErrorProcedure
,ERROR_LINE() AS ErrorLine
,ERROR_MESSAGE() AS ErrorMessage;

-------------------------------------------------------------
ALTER FUNCTION [dbo].[fn_calcula]
(
@valor1 int,
@valor2 int,
@operador char
)

RETURNS float
AS
BEGIN
DECLARE @resultado float

SET @resultado=CASE @operador


WHEN '*' THEN @VALOR1*@VALOR2
WHEN '+' THEN @VALOR1+@VALOR2
WHEN '-' THEN @VALOR1-@VALOR2
WHEN '/' THEN @VALOR1/@VALOR2

END
return cast(@valor1 as varchar(10))+@operador+cast(@valor2 as
varchar(10))+'='+cast(@resultado as varchar(20))
/*IF @operador='+'
set @r=@valor1+@valor2
ELSE
IF @operador='-'
set @r=@valor1-@valor2
ELSE
IF @operador='*'
set @r=@valor1*@valor2
ELSE
set @r=@valor1/@valor2
*/

END
-------------------------------------------------------------------
ALTER FUNCTION [dbo].[fn_calculadec]
(
@valor1 real,
@valor2 real,
@operador char
)

RETURNS real
AS
BEGIN
DECLARE @resultado real
--set @valor1=convert (real,@valor1)
--set @valor2=convert (real,@valor2)
SET @resultado=CASE @operador
WHEN '*' THEN @VALOR1*@VALOR2
WHEN '+' THEN @VALOR1+@VALOR2
WHEN '-' THEN @VALOR1-@VALOR2
WHEN '/' THEN @VALOR1/@VALOR2

END
return @resultado
-- return cast(@valor1 as varchar(10))+@operador+cast(@valor2 as
varchar(10))+'='+cast(@resultado as varchar(20))
/*IF @operador='+'
set @r=@valor1+@valor2
ELSE
IF @operador='-'
set @r=@valor1-@valor2
ELSE
IF @operador='*'
set @r=@valor1*@valor2
ELSE
set @r=@valor1/@valor2
*/

END
-------------------------------------------------------
ALTER FUNCTION [dbo].[fn_pisosencodciudad]
(
@codciudad int
)
RETURNS TABLE
AS
RETURN
(
select * from tbltienepisoen where CodCiudad=@codciudad
)
------------------------------------------------------

ALTER FUNCTION [dbo].[fn_saldo]


(
@ID int
)
RETURNS decimal(18,2)
AS
BEGIN
DECLARE @saldo decimal
SELECT @saldo=VALOR FROM TBLTIENEPISOEN WHERE id=@ID
RETURN @saldo
END
------------------------------------------------------------
ALTER FUNCTION [dbo].[fn_suma]
(@p1 int,
@p2 int)

RETURNS int
AS
BEGIN

RETURN @P1+@P2
END
----------------------------------------------------------
ALTER FUNCTION [dbo].[fn_tienepiso]
(

)
RETURNS TABLE
AS

RETURN
(
SELECT DISTINCT TBLTIENEPISOEN.DNI,TBLNOMBRES.NOMBRE
FROM TBLTIENEPISOEN INNER JOIN tblnombres ON
TBLNOMBRES.DNI=TBLTIENEPISOEN.DNI
)
--------------------------------------------------------------
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].[pisosentredosvalores]
@valor1 int,
@valor2 int
AS
BEGIN
SELECT *
FROM tbltienepisoen
WHERE valor>=@valor1 and valor<=@valor2
END
--------------------------------------------------------------
ALTER FUNCTION [dbo].[primeramayuscula]
(
@cadena varchar (255)
)
RETURNS varchar (255)
AS
BEGIN

DECLARE @pos int


DECLARE @resultado varchar(255)
SET @cadena=ltrim(@cadena)

if @cadena is null
set @resultado='????'
else
begin
set @resultado=upper(substring(@cadena,1,1));
set @pos=2
while @pos<=len(@cadena)
begin
set
@resultado=@resultado+lower(substring(@cadena,@pos,1));
set @pos=@pos+1;
end
end
return @resultado
END
--------------------------------------------------------
ALTER PROCEDURE [dbo].[resultado]

AS
declare @resultado int
BEGIN
exec suma 5,6,@resultado output
select @resultado

END
-----------------------------------------------------------
ALTER PROCEDURE [dbo].[sp_3]
@ID INT,
@VALOR INT
AS
BEGIN

IF EXISTS(SELECT * FROM TBLTIENEPISOEN WHERE ID=@ID)


BEGIN
SELECT * FROM TBLTIENEPISOEN WHERE ID=@ID
UPDATE TBLTIENEPISOEN SET VALOR=@VALOR WHERE ID=@ID
SELECT * FROM TBLTIENEPISOEN WHERE ID=@ID
END
ELSE
SELECT CAST (@ID AS CHAR(7))+ 'NO EXISTE'
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 [dbo].[SP_5]
@DNI INT,
@CODCIUDAD INT,
@VALOR INT
AS
BEGIN
IF EXISTS (SELECT * FROM TBLNOMBRES WHERE DNI=@DNI) AND
EXISTS(SELECT * FROM TBLCIUDAD WHERE CODCIUDAD=@CODCIUDAD)
BEGIN
insert into tbltienepisoen values(@dni,@codciudad,@valor)
print @@identity
END
ELSE
SELECT 'NO EXISTE'
END
-------------------------------------------------------------
ALTER PROCEDURE [dbo].[sp_6bis]
@cc int
AS
BEGIN
BEGIN TRY
DELETE FROM TBLCIUDAD WHERE CODCIUDAD=@CC
DELETE FROM TBLTIENEPISOEN WHERE CODCIUDAD=@CC
END TRY
BEGIN CATCH
EXEC ERRORMENSAGE
END CATCH

END
---------------------------------------------------------------
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].[suma]


@a int,
@b int,
@c int output
AS
BEGIN
SET @c=@a+@b
END

You might also like