U ovom vodiču vidjet ćete detaljan opis kako stvoriti i izvršiti imenovane blokove (postupke i funkcije).
Postupci i funkcije su potprogrami koji se mogu stvoriti i spremiti u bazu podataka kao objekti baze podataka. Mogu se pozvati ili uputiti i unutar ostalih blokova.
Osim toga, pokriti ćemo glavne razlike između ova dva potprograma. Također, razgovarat ćemo o ugrađenim funkcijama Oraclea.
U ovom vodiču za pohranjene postupke u Oracleu naučit ćete-
- Terminologije u PL / SQL potprogramima
- Što je postupak u PL / SQL-u?
- Što je funkcija?
- Sličnosti između postupka i funkcije
- Postupak vs. Funkcija: Ključne razlike
- Ugrađene funkcije u PL / SQL
Terminologije u PL / SQL potprogramima
Prije nego što naučimo o PL / SQL potprogramima, razgovarat ćemo o raznim terminologijama koje su dio tih potprograma. Ispod su terminologije o kojima ćemo razgovarati.
Parametar:
Parametar je varijabla ili rezervirano mjesto bilo kojeg valjanog PL / SQL tipa podataka putem kojeg PL / SQL potprogram razmjenjuje vrijednosti s glavnim kodom. Ovaj parametar omogućuje unos potprograma i izdvajanje iz tih podprograma.
- Te parametre treba definirati zajedno s potprogramima u vrijeme izrade.
- Ti su parametri uključeni u pozivni izraz ovih potprograma radi interakcije vrijednosti s potprogramima.
- Tip podataka parametra u potprogramu i pozivna izjava trebali bi biti isti.
- Veličina podatkovnog tipa ne bi se trebala spominjati u trenutku deklariranja parametra, jer je veličina dinamička za ovaj tip.
Na temelju njihove namjene parametri su klasificirani kao
- IN parametar
- OUT parametar
- IN OUT parametar
IN parametar:
- Ovaj se parametar koristi za unos potprograma.
- To je varijabla samo za čitanje unutar potprograma. Njihove se vrijednosti ne mogu mijenjati unutar potprograma.
- U pozivajućoj izjavi ti parametri mogu biti varijabla ili doslovna vrijednost ili izraz, na primjer, to može biti aritmetički izraz poput '5 * 8' ili 'a / b', gdje su 'a' i 'b' varijable .
- Prema zadanim postavkama parametri su IN tipa.
OUT parametar:
- Ovaj se parametar koristi za dobivanje rezultata iz potprograma.
- To je varijabla za čitanje i pisanje unutar potprograma. Njihove vrijednosti mogu se mijenjati unutar potprograma.
- U naredbi za pozivanje ti bi parametri uvijek trebali biti varijabla koja sadrži vrijednost iz trenutnih potprograma.
IN OUT parametar:
- Ovaj se parametar koristi i za davanje ulaznih podataka i za dobivanje rezultata iz potprograma.
- To je varijabla za čitanje i pisanje unutar potprograma. Njihove vrijednosti mogu se mijenjati unutar potprograma.
- U naredbi za pozivanje ovi parametri uvijek trebaju biti varijabla koja sadrži vrijednost iz potprograma.
Ti se parametri trebaju spomenuti u vrijeme izrade potprograma.
POVRATAK
RETURN je ključna riječ koja upućuje prevoditelju da prebaci kontrolu s potprograma na pozivni izraz. U potprogramu RETURN jednostavno znači da kontrola treba izaći iz potprograma. Jednom kada kontroler pronađe ključnu riječ RETURN u potprogramu, kod nakon toga preskočit će se.
Uobičajeno će nadređeni ili glavni blok pozvati potprograme, a zatim će se kontrola prebaciti s tih nadređenih blokova na pozvane potprograme. RETURN u potprogramu vratit će kontrolu natrag u njihov nadređeni blok. U slučaju funkcija naredba RETURN također vraća vrijednost. Tip podataka ove vrijednosti uvijek se spominje u vrijeme deklaracije funkcije. Tip podataka može biti bilo kojeg valjanog PL / SQL tipa podataka.
Što je postupak u PL / SQL-u?
Postupak u PL / SQL je potprogram jedinica koja se sastoji od skupine PL / SQL izraze koji se može nazvati po imenu. Svaka procedura u PL / SQL-u ima svoje jedinstveno ime pod kojim se može pozivati i nazivati. Ova podprogramska jedinica u Oracle bazi podataka pohranjena je kao objekt baze podataka.
Napomena: Podprogram nije ništa drugo nego postupak i treba ga stvoriti ručno prema zahtjevu. Jednom stvorene pohranit će se kao objekti baze podataka.
Ispod su karakteristike jedinice potprograma Procedure u PL / SQL:
- Postupci su samostalni blokovi programa koji se mogu pohraniti u bazu podataka.
- Poziv na ove PLSQL procedure može se izvršiti pozivanjem na njihovo ime radi izvršavanja PL / SQL naredbi.
- Uglavnom se koristi za izvršavanje procesa u PL / SQL-u.
- Može imati ugniježđene blokove ili se može definirati i ugniježditi unutar ostalih blokova ili paketa.
- Sadrži dio deklaracije (neobavezno), dio izvršenja, dio obrade iznimke (neobavezno).
- Vrijednosti se mogu proslijediti u Oracle proceduru ili dohvatiti iz procedure kroz parametre.
- Ti bi parametri trebali biti uključeni u izjavu o pozivu.
- Postupak u SQL-u može imati izraz RETURN za vraćanje kontrole u pozivni blok, ali ne može vratiti nikakve vrijednosti kroz izraz RETURN.
- Postupci se ne mogu pozivati izravno iz SELECT izraza. Mogu se pozvati iz drugog bloka ili putem EXEC ključne riječi.
Sintaksa:
CREATE OR REPLACE PROCEDURE( … )[ IS | AS ] BEGIN EXCEPTION END;
- CREATE PROCEDURE nalaže prevoditelju da kreira novi postupak u Oracleu. Ključna riječ 'ILI ZAMJENA' nalaže kompajleru da zamijeni postojeći postupak (ako postoji) trenutnim.
- Naziv postupka trebao bi biti jedinstven.
- Ključna riječ 'IS' koristit će se kada se pohranjena procedura u Oracleu ugnijezdi u neke druge blokove. Ako je postupak samostalni, tada će se koristiti 'AS'. Osim ovog standarda kodiranja, oba imaju isto značenje.
Primjer1: Izrada postupka i njegovo pozivanje pomoću EXEC-a
U ovom primjeru stvorit ćemo Oracle proceduru koja uzima ime kao ulaz i ispisuje poruku dobrodošlice kao izlaz. Koristit ćemo naredbu EXEC za pozivanje postupka.
CREATE OR REPLACE PROCEDURE welcome_msg (p_name IN VARCHAR2)ISBEGINdbms_output.put_line (‘Welcome '|| p_name);END;/EXEC welcome_msg (‘Guru99’);
Objašnjenje koda:
- Redak koda 1 : Stvaranje procedure s imenom 'welcome_msg' i s jednim parametrom 'p_name' tipa 'IN'.
- Redak koda 4 : Ispis poruke dobrodošlice spajanjem imena unosa.
- Postupak je uspješno sastavljen.
- Redak koda 7 : Pozivanje postupka pomoću naredbe EXEC s parametrom 'Guru99'. Postupak se izvršava, a poruka se ispisuje kao "Dobrodošli Guru99".
Što je funkcija?
Functions je samostalni PL / SQL potprogram. Kao i PL / SQL procedura, funkcije imaju jedinstveni naziv pod kojim se mogu pozivati. Oni su pohranjeni kao PL / SQL objekti baze podataka. Ispod su neke od karakteristika funkcija.
- Funkcije su samostalni blok koji se uglavnom koristi u svrhu izračuna.
- Funkcija koristi RETURN ključnu riječ da bi vratila vrijednost, a vrsta podataka je definirana u trenutku izrade.
- Funkcija treba ili vratiti vrijednost ili podići iznimku, tj. Povratak je obavezan u funkcijama.
- Funkcija bez DML izraza može se izravno pozvati u SELECT upitu, dok se funkcija s DML operacijom može pozvati samo iz drugih PL / SQL blokova.
- Može imati ugniježđene blokove ili se može definirati i ugniježditi unutar ostalih blokova ili paketa.
- Sadrži dio deklaracije (neobavezno), dio izvršenja, dio obrade iznimke (neobavezno).
- Vrijednosti se mogu proslijediti u funkciju ili dohvatiti iz procedure kroz parametre.
- Ti bi parametri trebali biti uključeni u izjavu o pozivu.
- PLSQL funkcija također može vratiti vrijednost kroz OUT parametre, osim korištenjem RETURN.
- Budući da će uvijek vratiti vrijednost, u naredbi pozivanja uvijek se pridružuje operatoru dodjele za popunjavanje varijabli.
Sintaksa
CREATE OR REPLACE FUNCTION( )RETURN [ IS | AS ] BEGIN EXCEPTION END;
- CREATE FUNCTION nalaže prevoditelju da stvori novu funkciju. Ključna riječ 'ILI ZAMJENA' nalaže prevoditelju da postojeću funkciju (ako postoji) zamijeni trenutnom.
- Naziv funkcije trebao bi biti jedinstven.
- Treba spomenuti tip podataka POVRAT.
- Ključna riječ 'IS' koristit će se kada je postupak ugniježđen u neke druge blokove. Ako je postupak samostalni, tada će se koristiti 'AS'. Osim ovog standarda kodiranja, oba imaju isto značenje.
Primjer1: Stvaranje funkcije i pozivanje pomoću Anonimnog bloka
U ovom ćemo programu stvoriti funkciju koja uzima ime kao ulaz i vraća poruku dobrodošlice kao izlaz. Upotrijebit ćemo anonimni blok i odabrati naredbu za pozivanje funkcije.
CREATE OR REPLACE FUNCTION welcome_msgJune ( p_name IN VARCHAR2) RETURN VAR.CHAR2ISBEGINRETURN (‘Welcome ‘|| p_name);END;/DECLARElv_msg VARCHAR2(250);BEGINlv_msg := welcome_msg_func (‘Guru99’);dbms_output.put_line(lv_msg);END;SELECT welcome_msg_func(‘Guru99:) FROM DUAL;
Objašnjenje koda:
- Linija 1 : Stvaranje Oracle funkcije s imenom 'welcome_msg_func' i s jednim parametrom 'p_name' tipa 'IN'.
- Redak koda 2 : deklariranje tipa povrata kao VARCHAR2
- Redak koda 5 : Vraćanje spojene vrijednosti 'Dobrodošli' i vrijednosti parametra.
- Redak koda 8 : Anonimni blok za pozivanje gornje funkcije.
- Redak koda 9 : Deklariranje varijable s tipom podataka istim kao i povratni tip podataka funkcije.
- Redak koda 11 : Pozivanje funkcije i popunjavanje povratne vrijednosti u varijablu 'lv_msg'.
- Redak koda 12 : Ispis vrijednosti varijable. Rezultat koji ćete ovdje dobiti je "Dobrodošli Guru99"
- Redak koda 14 : Pozivanje iste funkcije putem naredbe SELECT. Povratna vrijednost usmjerena je izravno na standardni izlaz.
Sličnosti između postupka i funkcije
- Oba se mogu pozvati iz drugih PL / SQL blokova.
- Ako se izuzetak pokrenut u potprogramu ne obrađuje u odjeljku rukovanja izuzecima potprograma, tada će se proširiti na pozivni blok.
- Obje mogu imati onoliko parametara koliko je potrebno.
- Oboje se u PL / SQL tretiraju kao objekti baze podataka.
Postupak vs. Funkcija: Ključne razlike
Postupak | Funkcija |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
Ugrađene funkcije u PL / SQL
PL / SQL sadrži razne ugrađene funkcije za rad sa nizovima i tipom podataka datuma. Ovdje ćemo vidjeti najčešće korištene funkcije i njihovu upotrebu.
Funkcije pretvorbe
Te se ugrađene funkcije koriste za pretvaranje jednog tipa podataka u drugi tip podataka.
Naziv funkcije | Upotreba | Primjer |
---|---|---|
TO_CHAR | Pretvara drugi tip podataka u tip podataka znaka | TO_CHAR (123); |
TO_DATE (string, format) | Pretvara zadani niz u datum. Niz mora odgovarati formatu. | DO_DATUMA ('2015-JAN-15', 'GGGG-MON-DD'); Izlaz: 15.1.2015 |
TO_NUMBER (tekst, format) | Pretvara tekst u brojčanu vrstu datog formata. Podatak '9' označava broj znamenki | Odaberite TO_NUMBER ('1234', '9999') iz dual; Izlaz: 1234 Odaberite TO_NUMBER ('1.234,45', '9,999.99') iz dual; Izlaz: 1234 |
String funkcije
To su funkcije koje se koriste na tipu podataka znaka.
Naziv funkcije | Upotreba | Primjer |
---|---|---|
INSTR (tekst, niz, početak, pojavljivanje) | Daje položaj određenog teksta u danom nizu.
| Odaberite INSTR ('ZRAKOPLOV', 'E', 2,1) iz dvostrukog izlaza : 2 Odaberite INSTR ('ZRAKOPLOV', 'E', 2,2) iz dvostrukog izlaza: 9 ( drugo pojavljivanje E) |
SUBSTR (tekst, početak, duljina) | Daje vrijednost podniza glavnog niza.
| odaberite substr ('avion', 1,7) iz dvostrukog izlaza : aeropla |
GORNJI (tekst) | Vraća veliko slovo navedenog teksta | Odaberite gornji ('guru99') iz dual; Izlaz : GURU99 |
DONJE (tekst) | Vraća mala slova navedenog teksta | Odaberite donji ('avion') iz dvostrukog; Izlaz : avion |
INITCAP (tekst) | Vraća dani tekst s početnim slovom velikim slovom. | Select ('guru99') from dual Output : Guru99 Select ('guru99') from dual Output : My Story |
DUŽINA (tekst) | Vraća duljinu zadanog niza | Odaberite LENGTH ('guru99') iz dual; Izlaz : 6 |
LPAD (tekst, dužina, pad_char) | Postavlja niz na lijevoj strani za zadanu duljinu (ukupni niz) s datim znakom | Odaberite LPAD ('guru99', 10, '$') iz dual; Izlaz : $$$$ guru99 |
RPAD (tekst, dužina, pad_char) | Postavlja niz s desne strane za zadanu duljinu (ukupni niz) s datim znakom | Odaberite RPAD ('guru99', 10, '-') iz dvostrukog izlaza : guru99 ---- |
LTRIM (tekst) | Izrezuje vodeći razmak iz teksta | Odaberite LTRIM ('Guru99') iz dual; Izlaz : Guru99 |
RTRIM (tekst) | Izrezuje zaostali razmak iz teksta | Odaberite RTRIM ('Guru99') iz dual; Izlaz ; Guru99 |
Datumske funkcije
To su funkcije koje se koriste za manipulaciju datumima.
Naziv funkcije | Upotreba | Primjer |
---|---|---|
DODAJ_MJESECI (datum, broj mjeseci) | Zadane mjesece dodaje datumu | DODAJ_MJESEC ('01.01.2015', 5); Izlaz : 01.05.2015 |
SYSDATE | Vraća trenutni datum i vrijeme poslužitelja | Odaberite SYSDATE iz dual; Izlaz : 4.10.2015. 14:11:43 |
TRUNC | Zaokružite datumsku varijablu na nižu moguću vrijednost | odaberite sysdate, TRUNC (sysdate) iz dual; Izlaz : 4.10.2015. 14:12:39 04.10.2015 |
KRUG | Zaokružuje datum na najbližu granicu, bilo veću ili manju | Odaberite sysdate, ROUND (sysdate) iz dualnog izlaza : 4.10.2015. 14:14:34 05.10.2015. |
MJESECI_MEĐU | Vraća broj mjeseci između dva datuma | Odaberite MONTHS_BETWEEN (sysdate + 60, sysdate) iz dvostrukog izlaza : 2 |
Sažetak
U ovom smo poglavlju naučili sljedeće.
- Kako stvoriti proceduru i različite načine pozivanja
- Kako stvoriti funkciju i različite načine pozivanja
- Sličnosti i razlike između postupka i funkcije
- Parametri i RETURN uobičajene terminologije u PL / SQL potprogramima
- Uobičajene ugrađene funkcije u Oracle PL / SQL