Како користити ускладиштене процедуре у MySQL-у

Uskladištene procedure predstavljaju izuzetno koristan alat u MySQL-u, omogućavajući vam da kreirate ponovo upotrebljive blokove SQL koda koje možete pozivati više puta. Na ovaj način, upravljanje bazom podataka postaje efikasnije i ekonomičnije, organizacija koda se unapređuje, a celokupan rad pojednostavljuje.

Šta su Zapravo Uskladištene Procedure?

U suštini, uskladištene procedure su grupe SQL komandi koje se čuvaju unutar same baze podataka. One su slične funkcijama u programiranju, budući da mogu da primaju argumente, izvršavaju specifične operacije i vraćaju rezultate.

Zašto je Preporučljivo Koristiti Uskladištene Procedure?

Postoji nekoliko ključnih prednosti korišćenja uskladištenih procedura:

  • Povećana Efikasnost: Umesto ponovnog slanja istog SQL koda, možete jednostavno aktivirati uskladištenu proceduru. Ovo štedi vreme i smanjuje opterećenje mreže.
  • Bolja Organizacija Koda: Uskladištene procedure vam omogućavaju da struktuirate SQL kod u jasno definisane module. To čini kod lakšim za čitanje i održavanje.
  • Unapređena Sigurnost: Korišćenjem uskladištenih procedura možete ograničiti pristup određenim podacima, što omogućava kontrolu nad tim ko može da pristupi specifičnim informacijama.
  • Smanjeni Troškovi: Uskladištene procedure mogu da smanje opterećenje servera, jer se SQL kod izvršava samo jednom prilikom kreiranja procedure.
  • Fleksibilnost Programiranja: Uskladištene procedure vam omogućavaju korišćenje kontrolnih struktura poput IF, ELSE, WHILE i CASE unutar SQL koda.

Kreiranje Uskladištene Procedure

Za kreiranje uskladištene procedure, koristite sledeću sintaksu:


CREATE PROCEDURE ime_procedure ([parametar1], [parametar2], ...)
BEGIN
    -- SQL naredbe
END;

Primer:


CREATE PROCEDURE get_zaposleni_po_odeljenju (IN id_odeljenja INT)
BEGIN
    SELECT * FROM zaposleni WHERE id_odeljenja = id_odeljenja;
END;

Pozivanje Uskladištene Procedure

Za pozivanje uskladištene procedure, koristite sledeću sintaksu:


CALL ime_procedure ([parametar1], [parametar2], ...);

Primer:


CALL get_zaposleni_po_odeljenju (1);

Tipovi Parametara

Uskladištene procedure mogu primati različite tipove parametara:

  • IN: Parametar se prosleđuje proceduri, ali se ne može menjati unutar nje.
  • OUT: Parametar se vraća iz procedure.
  • INOUT: Parametar se prosleđuje proceduri i može se menjati unutar nje.

Primeri Korišćenja Uskladištenih Procedura

1. Izračunavanje prosečne plate zaposlenih:


CREATE PROCEDURE izracunaj_prosecnu_platu (OUT prosecna_plata DECIMAL)
BEGIN
    SELECT AVG(plata) INTO prosecna_plata FROM zaposleni;
END;

2. Dodavanje novih podataka u tabelu:


CREATE PROCEDURE dodaj_novog_zaposlenog (IN ime_zaposlenog VARCHAR(255),
                                   IN plata_zaposlenog DECIMAL,
                                   IN odeljenje_zaposlenog INT)
BEGIN
    INSERT INTO zaposleni (ime, plata, id_odeljenja)
    VALUES (ime_zaposlenog, plata_zaposlenog, odeljenje_zaposlenog);
END;

3. Ažuriranje podataka o zaposlenom:


CREATE PROCEDURE azuriraj_zaposlenog (IN id_zaposlenog INT,
                                IN plata_zaposlenog DECIMAL)
BEGIN
    UPDATE zaposleni
    SET plata = plata_zaposlenog
    WHERE id = id_zaposlenog;
END;

Dodatne Mogućnosti

Osim osnovnih funkcija, uskladištene procedure nude i mnoge dodatne mogućnosti:

  • Lokalne Promenljive: Možete definisati lokalne promenljive unutar uskladištenih procedura.
  • Kontrolne Strukture: Možete koristiti kontrolne strukture poput IF, ELSE, WHILE i CASE u SQL kodu.
  • Kursori: Možete koristiti kursore za iteraciju kroz skup rezultata.
  • Trigeri: Uskladištene procedure se mogu koristiti kao trigeri za automatsko pokretanje akcija kada se izvrše određene operacije nad tabelama.

Zaključak

Uskladištene procedure su moćan alat u MySQL-u koji vam omogućava da poboljšate efikasnost, organizaciju i sigurnost vaše baze podataka. Pružaju vam mogućnost da kreirate višekratno upotrebljive module koda, što olakšava upravljanje podacima.

Često Postavljana Pitanja

1. Koje su prednosti korišćenja uskladištenih procedura?
Uskladištene procedure nude brojne prednosti, uključujući povećanu efikasnost, bolju organizaciju koda, unapređenu sigurnost, smanjene troškove i fleksibilnost programiranja.
2. Kako se kreira uskladištena procedura?
Uskladištene procedure se kreiraju pomoću naredbe CREATE PROCEDURE.
3. Kako se poziva uskladištena procedura?
Uskladištene procedure se pozivaju pomoću naredbe CALL.
4. Koje tipove parametara podržavaju uskladištene procedure?
Uskladištene procedure mogu da prihvate različite tipove parametara: IN, OUT i INOUT.
5. Koje kontrolne strukture su dostupne u uskladištenim procedurama?
Uskladištene procedure podržavaju kontrolne strukture kao što su IF, ELSE, WHILE i CASE.
6. Šta su kursori i kako se koriste?
Kursori su mehanizam koji vam omogućava iteraciju kroz skup rezultata.
7. Kako se uskladištene procedure koriste kao trigeri?
Uskladištene procedure se mogu koristiti kao trigeri za automatsko pokretanje akcija kada se izvrše određene operacije nad tabelama.
8. Da li je neophodno koristiti uskladištene procedure u svakom scenariju?
Korišćenje uskladištenih procedura nije obavezno u svakom scenariju.
9. Kada su uskladištene procedure najkorisnije?
Uskladištene procedure su najkorisnije kada želite da optimizujete performanse, poboljšate organizaciju, povećate sigurnost i olakšate održavanje koda.
10. Postoje li ograničenja pri korišćenju uskladištenih procedura?
Iako su uskladištene procedure moćan alat, postoje i ograničenja, naročito u pogledu složenosti i mogućnosti testiranja.

Tagovi: uskladištene procedure, MySQL, SQL, baza podataka, fleksibilnost programiranja, efikasnost, organizacija, sigurnost, kursori, trigeri

Korisni link:
MySQL Dokumentacija