Pohranjena procedura nasuprot funkciji
Pohranjene procedure i funkcije dvije su vrste programskih blokova. Obojica moraju imati pozivna imena. Ta pozivajuća imena koriste se za njihovo pozivanje unutar drugog programskog bloka poput procedura, funkcija i paketa ili SQL upita. Obje ove vrste objekata prihvaćaju parametre i izvršavaju zadatak iza tih objekata. Ovo je sintaksa (u ORACLE-u) za stvaranje pohranjene procedure, kreiraj ili zamijeni ime procedure procedure (parametri)
kao
početak
izjave;
iznimka
rukovanje_iznimkama
kraj;
Ovdje je sintaksa za stvaranje funkcije (u ORACLE-u), kreiraj ili zamijeni funkciju naziv_funkcije (parametri)
return return_datatype
kao
početak
izjave;
vrati povratnu_vrijednost/varijablu;
iznimka;
handling_exception;
kraj;
Pohranjeni postupci
Kao što je gore spomenuto, pohranjene procedure nazivaju se programskim blokovima. Oni prihvaćaju parametre kao korisnički unos i obrađuju prema logici koja stoji iza procedure i daju rezultat (ili izvode određenu radnju). Ovi parametri mogu biti vrste IN, OUT i INOUT. Deklaracije varijabli, dodjele varijabli, kontrolne izjave, petlje, SQL upiti i drugi pozivi funkcija/procedura/paketa mogu biti unutar tijela procedura.
Funkcije
Funkcije su također imenovani programski blokovi, koji moraju vratiti vrijednost pomoću naredbe RETURN, a prije nego što vrati vrijednost, njihovo tijelo također izvodi neke akcije (prema zadanoj logici). Funkcije također prihvaćaju parametre za pokretanje. Funkcije se mogu pozivati unutar upita. Kada se funkcija pozove unutar SELECT upita, ona se primjenjuje na svaki red skupa rezultata SELECT upita. Postoji nekoliko kategorija ORACLE funkcija. Oni su,
Funkcije jednog retka (vraća jedan rezultat za svaki redak upita)
Postoje podkategorije funkcija jednog retka.
- Numerička funkcija (npr.: ABS, SIN, COS)
- Funkcija znakova (npr. CONCAT, INITCAP)
- Funkcija datuma i vremena (npr. LAST_DAY, NEXT_DAY)
- Funkcije pretvorbe (npr. TO_CHAR, TO_DATE)
- Funkcija prikupljanja (npr.: CARDINALITY, SET)
- Agregatne funkcije (Vraća jedan redak, na temelju grupe redaka. Npr.: AVG, SUM, MAX)
- Analitičke funkcije
- Referentne funkcije objekta
- Funkcije modela
- Korisnički definirane funkcije
Koja je razlika između funkcije i pohranjene procedure?
• Sve funkcije moraju vratiti vrijednost korištenjem naredbe RETURN. Pohranjene procedure ne vraćaju vrijednosti pomoću izjave RETURN. Izjava RETURN unutar procedure vratit će svoju kontrolu pozivajućem programu. OUT parametri se mogu koristiti za vraćanje vrijednosti iz pohranjenih procedura.
• Funkcije se mogu pozivati unutar upita, ali se pohranjene procedure ne mogu koristiti unutar upita.
• Vrsta podataka RETURN mora biti uključena da bi se stvorila funkcija, ali u pohranjenoj proceduri DDL nije.