Professional Documents
Culture Documents
Transat SQL
Transat SQL
[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
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;
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)
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
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
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 FUNCTION [dbo].[fn_calcula]
(
@valor1 int,
@valor2 int,
@operador char
)
RETURNS float
AS
BEGIN
DECLARE @resultado float
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
)
------------------------------------------------------
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
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
------------------------------------------------------
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