sql protseduurid/ sql server
create table linnad(
linnID int primary key identity(1,1),
linnanimi varchar(25) UNIQUE,
rahvaArv int)
insert into linnad(linnanimi, rahvaarv)
values('Paide', 10000);
select * from linnad
--kubab tabelist linnad 2 veergu
USE protseduurmilovzorova
go
CREATE PROCEDURE lihtneSelect
AS
BEGIN
SELECT linnanimi, rahvaarv
FROM linnad;
END
--protseduuri käivitamine
EXEC lihtneSelect;
--lisamine tabelisse
USE protseduurmilovzorova
go
CREATE PROCEDURE lisalinn
@nimi varchar(30),
@rahvaKogus int
AS
BEGIN
INSERT INTO linnad(linnanimi, rahvaarv)
VALUES (@nimi, @rahvaKogus);
SELECT * FROM linnad;
END
EXEC lisalinn @nimi='Parnu', @rahvaKogus=18000;
USE protseduurmilovzorova
go
CREATE PROCEDURE suuremKui
@rahvaKogus int
AS
BEGIN
SELECT * FROM linnad
WHERE rahvaarv > @rahvaKogus
END
EXEC suuremKui @rahvaKogus=100000;
USE protseduurmilovzorova
go
CREATE PROCEDURE linnaOtsing
@taht char(1)
AS
BEGIN
SELECT * FROM linnad
WHERE linnanimi LIKE @taht + '%';
END
EXEC linnaOtsing @taht='T'
USE protseduurmilovzorova;
go
CREATE PROCEDURE linnaKustutamine
@kustutaId int
AS
BEGIN
SELECT * FROM linnad;
DELETE FROM linnad
WHERE linnID=@kustutaId;
SELECT * FROM linnad;
END
EXEC linnaKustutamine @kustutaId=2
USE protseduurmilovzorova;
go
CREATE PROCEDURE hinnang
AS
BEGIN
SELECT linnanimi, rahvaarv,
IIF(rahvaarv>100000, 'Suur linn', 'Väik linn') AS hinnang
FROM linnad;
END
EXEC hinnang
USE protseduurmilovzorova
go
CREATE PROCEDURE StruktuuriMuutmine
@tegevus varchar(20),
@tabelinimi varchar(20),
@veerunimi varchar(20),
@tyyp varchar(20)
AS
BEGIN
DECLARE @sqltegevus as varchar(max)
set @sqltegevus=case
when @sqltegevus='lisa' THEN CONCAT('ALTER TABLE ', @tabelinimi, ' ADD ', @veerunimi, ' ',@tyyp)
END;
print @sqltegevus;
BEGIN
EXEC (@sqltegevus);
END
END
--käivitamine
EXEC StruktuuriMuutmine @tegevus='lisa', @tabelnimi='linnad', @veerunimi='test',@tyyp='int';
SELECT * FROM linnad
CREATE PROCEDURE StruktuuriMuutmine2
@tegevus varchar(20),
@tabelinimi varchar(20),
@veerunimi varchar(20),
@tyyp varchar(20)=null
AS
BEGIN
DECLARE @sqltegevus as varchar(max)
if @valik='lisa'
set @sqltegevus=CONCAT('ALTER TABLE ', @tabelinimi, ' ADD ', @veerunimi, ' ', @tyyp);
execute (@sqltegevus);
END
EXEC StruktuuriMuutmine2 @valik='lisa', @tabelinimi='linnad', @veerunimi='vanus',@tyyp='int';
SELECT * FROM linnad
---veergu kustutamine
EXEC StruktuuriMuutmine2 @tegevus='kustuta', @tabelinimi='linnad', @veerunimi='test2';