Pohranjene procedure pomažu u optimizaciji baze podataka i u poboljšanju ponovne upotrebe. Umjesto da morate izvršiti isti upit, možete stvoriti zadatak kao pohranjenu proceduru koju ćete pozvati kad god je potrebno. Do kraja ovog posta naučit ćete sve o pohranjenim procedurama.
Rad s pohranjenim procedurama u PostgreSQL-u
Kao PostgreSQL korisnik, možda ste primijetili da PostgreSQL funkcije ne izvršavaju transakcije. Iako je moguće kreirati transakciju, njezino izvršenje ili vraćanje u prethodno stanje nije moguće. Međutim, ta se ograničenja zaobilaze pomoću pohranjenih procedura.
Evo osnovne sintakse za stvaranje pohranjene procedure u PostgreSQL-u:
STVARAJTE ILI ZAMIJENITE PROCEDURU procedure_name(
parametar(i) data_type
)
JEZIK plpsql;
KAO $$
PROGLASITI
varijable_ako_bilo koji_tip podataka
POČETI
logika
KRAJ;
$$
Ključne stvari koje treba imati na umu iz dane sintakse su 'procedure_name' što je naziv koji ćete koristiti za pohranjenu proceduru, parametri koje želite uključiti i njihovi tipovi podataka te logika koja su uglavnom SQL izjave.
Dat ćemo tri primjera koji će vam pomoći da shvatite kako stvoriti pohranjene procedure u PostgreSQL-u.
Primjer 1: Pohranjena procedura za izračunavanje kvadrata broja
Za naš prvi primjer, kreiramo pohranjenu proceduru koja koristi naredbu 'RAISE NOTICE' kao način ispisa izlaza na terminal. Pohranjena procedura uzima vrijednost cijelog broja koju ste joj dali kada je pozivate i izračunava njen kvadrat.
Evo kako stvaramo pohranjenu proceduru:
Naš parametar nazivamo 'num1' i to je cijeli broj. Za logički dio, definiramo kako dobiva kvadrat od 'num1' i pohranjuje ga kao kvadratnu varijablu. Kada izvršimo naredbu, dobivamo izlaz “CREATE PROCEDURE” koji potvrđuje da smo uspjeli uspješno kreirati pohranjenu proceduru.
Sljedeći zadatak je pozvati proceduru i dati joj očekivani argument.
CALL procedure_name(argumenti);Dobit ćete izlaz CALL koji pokazuje da je pohranjena procedura izvršena, a mi dobivamo očekivani izlaz koji je, u ovom slučaju, kvadrat argumenta koji smo dodali.
Primjer 2: Pohranjena procedura za umetanje vrijednosti u unos tablice
Sljedeća dva primjera pokazuju kako stvoriti pohranjenu proceduru koja radi s tablicom baze podataka. Kreirajmo brzo tablicu 'učenici' s kojom ćemo raditi.
Za ovaj primjer stvaramo pohranjenu proceduru koja korisniku omogućuje umetanje vrijednosti u novostvorenu tablicu. Primijetite kako specificiramo parametre za koje očekujemo da će biti dodani kao argumenti kada pozivamo pohranjenu proceduru. Štoviše, definiramo logiku koja uzima dodane argumente i izvršava INSERT SQL naredbu u tablici “students”.
Dostupne pohranjene procedure možemo provjeriti pokretanjem sljedeće naredbe:
\dfPrva pohranjena procedura koju možemo vidjeti iz sljedećeg izlaza je 'add_student' koju smo prethodno stvorili.
Sada pozovimo pohranjenu proceduru da je izvršimo. Sljedeća slika prikazuje kako imamo praznu tablicu, ali pozvali smo pohranjenu proceduru da dodamo prvog učenika:
Ako ispišemo vrijednosti u našoj tablici, primijetite kako su argumenti koje smo dodali s naredbom poziva procedure vrijednosti za našeg prvog učenika u našoj tablici. Tako stvarate pohranjenu proceduru za umetanje vrijednosti u tablicu.
Imajte na umu da prilikom stvaranja pohranjene procedure parametri koje navedete moraju odgovarati onome što se očekuje u vašoj tablici kako biste izbjegli pogreške. Štoviše, vrsta podataka mora odgovarati.
Primjer 3: Pohranjena procedura za ažuriranje unosa u tablici
Idemo dalje, stvorimo drugu pohranjenu proceduru koja ažurira unos tablice. Ako želite imati brz način ažuriranja vrijednosti u našoj tablici, možete stvoriti ažuriranje pohranjene procedure na sljedeći način:
Odredite koji stupac želite ažurirati pomoću ključne riječi WHERE i novu vrijednost pomoću ključne riječi SET. Zatim morate dodati ključnu riječ COMMIT da biste zadržali promjene.
Pozovimo pohranjenu proceduru ažuriranja i dodajmo očekivane argumente: 'student_id' i novi tečaj.
Ako navedemo unose u našoj tablici, možemo potvrditi da imamo ažurirani tečaj za određenog učenika kojeg smo ciljali. Tako funkcionira pohranjena procedura ažuriranja.
Zaključak
Možete stvoriti bilo koju pohranjenu proceduru u PostgreSQL-u. Trebate samo razumjeti sintaksu koju treba slijediti i zatim definirati svoju logiku za pohranjenu proceduru. Odatle pozovite pohranjenu proceduru i provjerite je li izvršena prema očekivanjima. Ovaj post objašnjava pohranjene procedure u PostgreSQL-u i daje primjere kako ih izraditi.