[[oktatas:adatbazis-kezeles:mariadb:sql|< SQL]]
====== Tárolt eljárások ======
* **Szerző:** Sallai András
* Copyright (c) 2022, Sallai András
* Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]]
* Web: https://szit.hu
===== Példa adatbázis =====
create database fer;
create table dolgozok (
az int not null primary key auto_increment,
nev varchar(50),
telepules varchar(50),
fizetes double
);
insert into dolgozok
(nev, telepules, fizetes)
values
("Parkos Irén", "Szeged", 2872000),
("Strand Imre", "Szolnok", 2644000),
("Répa Ferenc", "Szeged", 2235000),
("Árkus Béla", "Debrecen", 2352000),
("Tünde Mária", "Szolnok", 2438500);
===== Tárolt eljárások megtekintése =====
show procedure status \G
Egyetlen eljárás tartalma:
show create procedure proc1 \G
===== Eljárás készítése =====
Az eljárásokon belül, normál SQL utasításokat írunk, amiket ; pontosvesszővel zárunk.
Azonban, valahogy jeleznünk kell, hogy befejeztük a tárolt eljárást, ezért ideiglenesen
megváltoztatjuk az alapértelmezett utasítás szeparátort.
A következő példában két // jel karakter adunk meg szeparátornak.
Ezzel jelezzük, hogy vége a tárolt eljárásnak. Az eljáráson belül
az utasításokat továbbra is ; pontosvesszővel zárjuk.
Az eljárás írása előtt ki kell választanunk egy adatbázist, amihez
csatoljuk az eljárást.
delimiter //
create procedure leker()
begin
select * from dolgozok;
end //
delimiter ;
call leker();
Az elkészült eljárást a call utasítással hívjuk.
===== Törlés =====
drop procedure leker;
===== Jogok beállítása =====
Felhasználó létrehozása:
create user fer@localhost identified by 'titok';
Eljárások és függvények futtathatók:
grant execute on *.* to fer@localhost;