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('Tallinn', 600000);
SELECT * FROM linnad;

INSERT INTO linnad (linnanimi, rahvaarv)
VALUES('Tartu', 600000);
SELECT * FROM linnad;

INSERT INTO linnad (linnanimi, rahvaarv)
VALUES('Valga', 1000);
SELECT * FROM linnad;

INSERT INTO linnad (linnanimi, rahvaarv)
VALUES('Jõhvi', 123000);
SELECT * FROM linnad;

INSERT INTO linnad (linnanimi, rahvaarv)
VALUES('Võru', 2000);
SELECT * FROM linnad;
--kuvab tabelist linnad 2 veergu
USE ProtseduurDenissGorjunovTARpv22 
go
CREATE PROCEDURE lihtneSelect
AS 
Begin
SELECT linnanimi, rahvaarv from linnad;
end
---protseduuri käivitamine
EXECUTE lihtneSelect;
-- lisamine tabelisse
USE ProtseduurDenissGorjunovTARpv22 
go
CREATE PROCEDURE lisalinn
@nimi varchar(30),
@rahvaKogus int
AS 
Begin
INSERT INTO linnad(linnanimi,rahvaarv)
VALUES(@nimi, @rahvaKogus);
SELECT * FROM linnad;
END
---käivitamine
EXECUTE lisalinn @nimi='Paide',@rahvaKogus=23144;
-- Suurem kui
USE ProtseduurDenissGorjunovTARpv22 
go
CREATE PROCEDURE suuremKui
@rahvaKogus int
AS
BEGIN
SELECT * from linnad
where rahvaArv > @rahvaKogus;
END

EXECUTE suuremKui @rahvaKogus=100000;
-- linna otsing
USE ProtseduurDenissGorjunovTARpv22 
go
CREATE PROCEDURE linnaOtsing
@taht char(1)
AS
BEGIN
SELECT * FROM linnad
WHERE linnanimi LIKE @taht + '%';
END

EXECUTE linnaOtsing @taht=j;
-- linna kustutamine
USE ProtseduurDenissGorjunovTARpv22 
go
CREATE PROCEDURE linnaKustutamine
@kustutaId int
AS
BEGIN
SELECT * FROM linnad;
DELETE FROM linnad
WHERE linnID=@kustutaId;
SELECT * FROM linnad;
END

EXECUTE linnaKustutamine @kustutaID=2;
-- linna tingimus IIF
USE ProtseduurDenissGorjunovTARpv22 
go
CREATE PROCEDURE hinnang
AS
BEGIN
SELECT linnanimi, rahvaarv,
IIF(rahvaarv>100000, 'Suur linn', 'Väike linn') AS hinnang FROM linnad
END

exec hinnang;
CREATE TABLE keel (
  keelID int PRIMARY KEY IDENTITY (1,1),
  keelNimi varchar(25),
  keelNimiVene varchar(25),
  keelNimiInglise varchar(25)
)
USE ProtseduurDenissGorjunovTARpv22
GO
CREATE PROCEDURE lisaKeelNimi
@KN varchar(30),
@KNV varchar(30),
@KNI varchar(30)
AS
BEGIN
INSERT INTO keel(keelNimi, keelNimiVene, keelNimiInglise)
VALUES(@KN,@KNV,@KNI)
SELECT * FROM keel;
END

EXEC lisaKeelNimi @KN="Prantsus", @KNV="фыв",@KNI="Hello";
USE ProtseduurDenissGorjunovTARpv22
GO
CREATE PROCEDURE keelOtsing
@taht char(1)
AS
BEGIN
SELECT keelNimi FROM keel
WHERE keelNimi LIKE concat('%',@taht,'%');
END

EXEC keelOtsing P
USE ProtseduurDenissGorjunovTARpv22
GO
CREATE PROCEDURE pdate
@keelLisa varchar(30),
@keeleID int
AS
BEGIN
SELECT * FROM keel;
UPDATE keel SET keelNimi=@keelLisa
WHERE keelID=@keeleID;
SELECT * FROM keel;
END

EXECUTE pdate @keelLisa='Saksa', @keeleID=1;
USE ProtseduurDenissGorjunovTARpv22
GO
CREATE PROCEDURE Kustuta
@keelDel varchar(30)
AS
BEGIN
SELECT * FROM keel;
DELETE FROM keel
WHERE keelNimi=@keelDel;
SELECT * FROM keel;
END

Exec Kustuta @keelDel='Saksa'
USE ProtseduurDenissGorjunovTARpv22
GO
CREATE PROCEDURE otsingSum
AS
BEGIN
SELECT count(keelNimi) as 'üldine keel' from keel;
END

SELECT * FROM keel;
EXEC otsingSuma
USE ProtseduurDenissGorjunovTARpv22
GO
CREATE PROCEDURE StrujtuuriMuutmine
@tegevus varchar(30),
@tabelinimi varchar(30),
@veerunimi varchar(30),
@tyyp varchar(30)=null
AS
BEGIN
DECLARE @sqltegevus as varchar(max)
set @sqltegevus=case
WHEN @tegevus='lisa' then CONCAT('ALTER TABLE ', @tabelinimi, ' ADD ', @veerunimi, ' ', @tyyp)
WHEN @tegevus='kustuta' then CONCAT('ALTER TABLE ', @tabelinimi, ' DROP COLUMN ', @veerunimi)
END;
print @sqltegevus;
Begin
EXEC (@sqltegevus);
END
END
---käivitamine
SELECT * FROM keel;
EXEC StrujtuuriMuutmine @tegevus='lisa', @tabelinimi='keel', @veerunimi='test', @tyyp='int';
SELECT * FROM keel;
EXEC StrujtuuriMuutmine @tegevus='kustuta', @tabelinimi='keel', @veerunimi='test';
SELECT * FROM keel;
USE ProtseduurDenissGorjunovTARpv22
GO
CREATE PROCEDURE StrujtuuriMuutmine2
@valik varchar(30),
@tabelinimi varchar(30),
@veerunimi varchar(30),
@tyyp varchar(30)=null
AS
BEGIN
DECLARE @sqltegevus as varchar(max)

IF @valik='lisa' 
SET @sqltegevus=CONCAT('ALTER TABLE ', @tabelinimi, ' ADD ', @veerunimi, ' ', @tyyp)
execute (@sqltegevus)

if @valik='kustuta' 
SET @sqltegevus=CONCAT('ALTER TABLE ', @tabelinimi, ' DROP COLUMN ', @veerunimi)
execute (@sqltegevus)
END

SELECT * FROM keel;
EXEC StrujtuuriMuutmine2 @valik='lisa', @tabelinimi='keel', @veerunimi='test2', @tyyp='int';
SELECT * FROM keel;
EXEC StrujtuuriMuutmine2 @valik='kustuta', @tabelinimi='keel', @veerunimi='test2';
SELECT * FROM keel;

Reapeat