Salvestatud protseduurid /SQL Server

Sissejuhatus

Salvestatud protseduurid on SQL Serveris oluline tööriist, mis võimaldab arendajatel ja andmeanalüütikutel automatiseerida andmebaasi toiminguid ja hallata keerukaid andmevooge. Need protseduurid on eeldefineeritud SQL-käskluste kogumid, mida saab käivitada nagu funktsioone, et vähendada arendusaega ja suurendada koodi korduvkasutust.

Mis on Salvestatud Protseduurid?

Salvestatud protseduurid on SQL Serveri andmebaasis salvestatud SQL-koodid, mis sisaldavad ühte või mitut SQL-käsku. Need on kasulikud, kuna:

  • Koodikorduvus: Salvestatud protseduuride abil saate vältida sama koodi korduvat kirjutamist erinevates kohtades.
  • Jõudlus: Protseduurid kompileeritakse ja optimeeritakse enne käivitamist, mis võib parandada jõudlust.
  • Turvalisus: Salvestatud protseduurid aitavad piirata andmebaasi kasutajate õigusi, võimaldades neile ainult teatud protseduuride käivitamist.

Kuidas Luua Salvestatud Protseduure?

Salvestatud protseduuride loomine SQL Serveris on lihtne. Järgnevalt on toodud näide, kuidas luua ja käivitada salvestatud protseduur:

create table pidupaev(
id int primary key identity(1,1),
kuupaev date,
pidu varchar(50),
riik varchar(50));
insert into pidupaev(kuupaev, pidu, riik)
values ('2024-02-24', 'Iseseisvusepäev','Eesti');
select * from pidupaev;
--kuvab kõik mis on tabelis
USE Jun;
go
create procedure tabeliKuvamine
AS
begin
select * from pidupaev;
end;
--kutse
exec tabeliKuvamine;
-- loo protseduur, mis täidab tabeli
USE Jun;
go
create procedure LisaTabeli
@kuupaev date,
@pidu varchar(50),
@riik varchar(50)
AS
begin
insert into pidupaev(kuupaev, pidu, riik)
values(@kuupaev, @pidu, @riik);
select * from pidupaev;
end;
--kutse
exec LisaTabeli '2024-01-01','Uus aasta', 'Eesti'
exec LisaTabeli '2024-02-29','Suur Reede', 'Eesti'
exec LisaTabeli '2024-03-31','Ülestõusmispühade', 'Eesti'
exec LisaTabeli '2024-04-01','Kevadpüha', 'Eesti'
exec LisaTabeli '2024-04-19','Nelipühade', 'Eesti'
exec LisaTabeli '2024-05-23','Võidupüha', 'Eesti'
exec LisaTabeli '2024-05-24','Jaanipäev', 'Eesti'
exec LisaTabeli '2024-08-20','Taasiseseisvumispäev', 'Eesti'
exec LisaTabeli '2024-12-24','Jõululaupäev', 'Eesti'
exec LisaTabeli '2024-12-25','Esimene jõulupüha', 'Eesti'
exec LisaTabeli '2024-12-26','Teine jõulupüha', 'Eesti'
USE Jun;
go
create procedure KustutaIDjargi
@deleteID int
AS
begin
select * from pidupaev;
delete from pidupaev
where id=@deleteID;
select * from pidupaev;
end;
--kutse
exec KustutaIDjargi @deleteID=2;
exec KustutaIDjargi 1;


--Kuvame kõik peod mis algavad 'M' tähega

USE Jun;
go
create procedure peodAlgavad
@taht char(1)
AS
begin
select kuupaev, pidu
from pidupaev
where pidu like @taht + '%'
end;
exec peodAlgavad 'M';
-- kuvame kõik peod mis on ühe kuu jooksuk

USE Jun;
go
create procedure KuuPeod
@kuupaev1 date,
@kuupaev2 date
AS
begin
select kuupaev, pidu
from pidupaev
where kuupaev between @kuupaev1 and @kuupaev2;
end;
exec KuuPeod '2024-01-01','2024-02-29'
exec kuupeod @kuupaev1 = '2024-01-01', @kuupaev2='2024-01-02'

This post is also available in ru_RU.