SQL. Salvestatud protseduurid / localhost

CREATE TABLE filmtype (
  filmTypeID int NOT NULL primary key,
  filmType varchar(25) NOT NULL,
  kirjeldus text DEFAULT NULL
);

select * from filmtype;

INSERT INTO filmtype(filmTypeID,filmType,kirjeldus) VALUES
(1, '2D', '2D-arvutigraafika on pildi esitamine digitaalsete kahemõõtmeliste mudelitena, näiteks tasandilise geomeetria ja teksti abil.'),
(2, '3D', '3D-arvutigraafika on pildi esitamine digitaalsete kolmemõõtmeliste mudelitena, näiteks ruumilise geomeetria abil.\r\n\r\n3D-mudel on kolmemõõtmelise objekti matemaatiline esitus. Mudelit saab kuvada kahemõõtmelisena 3D-renderdamise kaudu või kasutada mittevisuaalse arvutisimulatsiooni või arvutuste jaoks. On olemas ka 3D-arvutigraafika tarkvara.'),
(3, '4D', '3D-arvutigraafika lisaeffektidega.');
create procedure filmTypeLisamine
@id int,
@type varchar(100),
@kirjeldus text
as
begin
insert into filmtype(filmTypeID,filmType,kirjeldus)
values (@id, @type, @kirjeldus);
select * from filmtype;
end

-- kontroll

exec filmTypeLisamine 4, '10D', 'Uus super pupper film';
create procedure filmTypeKustuta
@kustutamisID int
as
begin
select * from filmtype;
delete from filmtype
where filmtypeID = @kustutamisID;
select * from filmtype;
end;
-- kontroll
exec filmTypeKustuta 4

— Otsing sisestatud tähte järgi

CREATE PROCEDURE otsingTaht
    @taht CHAR(1)
AS
BEGIN
    SELECT filmType, kirjeldus
    FROM filmtype
    WHERE filmType LIKE @taht + '%';
END;
-- kontroll 
EXEC otsingTaht @taht = 'A';
  1. rezisoorLisamine ees ja perekonna nime tabelisse rezisoor
CREATE PROCEDURE rezisoorLisamine
    @rezisoorID INT,
    @uusEesnimi VARCHAR(50),
    @uusPerenimi VARCHAR(50)
AS
BEGIN
    INSERT INTO rezisoor (rezisoorID, eesnimi, perenimi)
    VALUES (@rezisoorID, @uusEesnimi, @uusPerenimi);

    SELECT * FROM rezisoor;
END;

Käivitamine:

-- kontroll 
EXEC rezisoorLisamine @rezisoorID = 7, @uusEesnimi = 'Martin', @uusPerenimi = 'Sild';

Tulemus:

2. zanrKustutamine

CREATE PROCEDURE zanrKustutamine
    @kasutajaID INT
AS
BEGIN
    SELECT * FROM zanr;
    DELETE FROM zanr
    WHERE zanrID = @kasutajaID;
    SELECT * FROM zanr;
END;

Käivitamine

EXEC zanrKustutamine @kasutajaID = 10;

Tulemus:

3. tabeli kustutamine

CREATE PROCEDURE tableKustutamine
    @tabeliKustutamine VARCHAR(100)
AS
BEGIN
    IF OBJECT_ID(@tabeliKustutamine, 'U') IS NOT NULL
    BEGIN
        DECLARE @STMT AS VARCHAR(MAX);
        SET @STMT = CONCAT('DROP TABLE ', @tabeliKustutamine);
        EXEC(@STMT);
        PRINT 'Tabel ' + @tabeliKustutamine + ' on edukalt kustutatud.';
    END
    ELSE
    BEGIN
        PRINT 'Tabelit ' + @tabeliKustutamine + ' ei leitud.';
    END
END;

Käivitamine

EXEC tableKustutamine @tabeliKustutamine = 'test';

Tulemus

4. zanrUuendamine

CREATE PROCEDURE zanrUendamine
    @id INT,
    @uusZanr VARCHAR(25)
AS
BEGIN
    UPDATE zanr
    SET zanrNimi = @uusZanr
    WHERE zanrID = @id;

    SELECT * FROM zanr;
END;

Käivitamine

EXEC zanrUendamine @id = 1, @uusZanr = 'Martin';

Tulemus

5.

CREATE PROCEDURE muudatus
@tegevus varchar(10),
@tabelinimi varchar(25),
@veerunimi varchar(25),
@tyyp varchar(25) =null
AS
BEGIN
DECLARE @sqltegevus as varchar(max)
set @sqltegevus=case 
when @tegevus='add' then concat('ALTER TABLE ', 
@tabelinimi, ' ADD ', @veerunimi, ' ', @tyyp)
when @tegevus='drop' then concat('ALTER TABLE ', 
@tabelinimi, ' DROP COLUMN ', @veerunimi)
END;
print @sqltegevus;
begin 
EXEC (@sqltegevus);
END
END;
--добавление столбца
EXEC muudatus @tegevus='add', @tabelinimi='test', @veerunimi='testID', @tyyp='int';
select * from ...
--удаление столбца
EXEC muudatus @tegevus='drop', @tabelinimi='test', @veerunimi='testID';