[[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;