Protseduurid SQL SERVER

1. Создание таблицы

CREATE TABLE linnad(
linnID int PRIMARY KEY IDENTITY(1,1),
linnanimi varchar(20) UNIQUE,
rahvaArv int);

INSERT INTO linnad (linnanimi, rahvaArv)
VALUES(‘Tallinn’, 650000);

SELECT * FROM linnad

2. Создание и Запуск процедуры в SQL Server

–kuvab tabelist linnad 2 veergu
USE ProtseduurTsepelevits
GO
CREATE PROCEDURE lihtneSelect
AS
BEGIN
SELECT linnanimi, rahvaArv
FROM linnad;
END

–protseduuri käivitamine
EXEC lihtneSelect

3. Процедура добавления нового города

— lisamine tabelisse
USE ProtseduurTsepelevits
GO
CREATE PROCEDURE lisLinn
@nimi varchar(25),
@rahvaKogus int
AS
BEGIN
INSERT INTO linnad(linnanimi, rahvaArv)
VALUES(@nimi, @rahvaKogus);
SELECT * from linnad;

END

EXEC lisLinn @nimi=’Valga’, @rahvaKogus=220000;

4.Процедура отображения значений выше введеного значения при запуске

USE ProtseduurTsepelevits
GO
CREATE PROCEDURE SuuremKui
@rahvaKogus int
AS
BEGIN
SELECT * FROM linnad
WHERE rahvaArv > @rahvaKogus;
END

EXEC SuuremKui @rahvaKogus=200000;

6. Процедура нахождения города по первой букве

ProtseduurTsepelevits
GO
CREATE PROCEDURE linnaOtsing
@taht char(1)
AS
BEGIN
SELECT * FROM linnad
WHERE linnanimi LIKE @taht + ‘%’;
END

EXEC linnaOtsing ‘T’;

7. Процедура удаления по города ID

USE ProtseduurTsepelevits
GO
CREATE PROCEDURE linnaKustutamine
@kustutaId int
AS
BEGIN
SELECT * FROM linnad
DELETE FROM linnad
WHERE linnID=@kustutaId;
SELECT * FROM linnad
END

EXEC linnaKustutamine @kustutaId = 5

8. Процедура оценки, большой или маленький город

USE ProtseduurTsepelevits
GO
CREATE PROCEDURE hinnang
AS
BEGIN
SELECT linnanimi,rahvaArv,
IIF(rahvaArv>200000, ‘Suur linn’, ‘Väike linn’) AS hinnang
FROM linnad;
END

EXEC hinnang

Повторение Практической работы

1. Процедура нахождения режиссера по первой букве имени

USE ProtseduurTsepelevits
GO
CREATE PROCEDURE eesOtsing2
@taht char(1)
AS
BEGIN
SELECT * FROM rezisoor2
WHERE eesnimi LIKE @taht + '%';
END
EXEC eesOtsing2 'S';

2. Процедура нахождения режиссера по первой букве фамилии

USE ProtseduurTsepelevits
GO
CREATE PROCEDURE pereOtsing
@taht char(1)
AS
BEGIN
SELECT * FROM rezisoor2
WHERE perenimi LIKE @taht + '%';
END
EXEC pereOtsing 'B';

3. Процедура удаления режиссера по ID

USE ProtseduurTsepelevits
GO
CREATE PROCEDURE rezisooriKustutamine
@kustutaId int
AS
BEGIN
SELECT * FROM rezisoor2
DELETE FROM rezisoor2
WHERE rezisoorID=@kustutaId;
SELECT * FROM rezisoor2
END
EXEC rezisooriKustutamine @kustutaId = 5;

4. Процедура обновления года по ID

USE ProtseduurTsepelevits;
GO
CREATE PROCEDURE uuendusId
@uuendusID INT,
@uuendusaasta INT
AS
BEGIN
SELECT * FROM rezisoor2
UPDATE rezisoor2
SET synniaasta = @uuendusaasta
WHERE rezisoorID = @uuendusID;
SELECT *
FROM rezisoor2
WHERE rezisoorID = @uuendusID;
END
EXEC uuendusId @uuendusID=2, @uuendusaasta=2011;

5. Процедура показывающая при запуске кто старый а кто молодой режиссер

USE ProtseduurTsepelevits
GO
CREATE PROCEDURE vanuseVeerg
AS
BEGIN
SELECT * ,
IIF(synniaasta<2000, 'Vana', 'Noor') AS vanus
FROM rezisoor2
END
EXEC vanuseVeerg

6. Процедура выводит возраст всех режиссеров

USE ProtseduurTsepelevits
GO
CREATE PROCEDURE vanuseOtse
AS
BEGIN
SELECT * , (2023 - synniaasta) AS vanus
FROM rezisoor2;
END
EXEC vanuseOtse

7.Процедура добавления и удаления новой колонки в таблицу

USE ProtseduurTsepelevits
GO
CREATE PROCEDURE StruktuuriMuutmine
@tegevus varchar(20),
@tabelinimi varchar(20),
@veerunimi varchar(20),
@tyyp varchar(20) = NULL
AS
BEGIN
DECLARE @sqltegevus AS varchar(max)
SET @sqltegevus = IIF(@tegevus = 'lisa', CONCAT('ALTER TABLE ', @tabelinimi, ' ADD ', @veerunimi, ' ', @tyyp),
IIF(@tegevus = 'kustuta',CONCAT('ALTER TABLE ', @tabelinimi, ' DROP COLUMN ', @veerunimi),NULL))
END;
print @sqltegevus;
BEGIN
EXEC (@sqltegevus);
END
END
--käivitamine ja vvergu lisamine ja kustutamine
EXEC StruktuuriMuutmine @tegevus ='lisa', @tabelinimi = 'linnad', @veerunimi = 'test', @tyyp = 'int';
SELECT * FROM linnad;
EXEC StruktuuriMuutmine @tegevus = 'kustuta', @tabelinimi = 'linnad', @veerunimi = 'test', @tyyp = 'int';
SELECT * FROM linnad;

8. Процедура нахождение людей старше чем число вводимым пользователем

USE ProtseduurTsepelevits
GO
CREATE PROCEDURE Vanem_Kui
@synniOtse INT
AS
BEGIN
SELECT *
FROM rezisoor2
WHERE synniaasta < @synniOtse
END
EXEC Vanem_Kui @synniOtse = 2000;