Oracle PL/SQL-tallennettu prosessi ja funktiot esimerkein
Proseduurit ja funktiot ovat aliohjelmia, jotka voidaan luoda ja tallentaa tietokantaan tietokantaobjekteina. Niitรค voidaan kutsua tai viitata myรถs muiden lohkojen sisรคllรค.
Tรคmรคn lisรคksi kรคsittelemme tรคrkeimmรคt erot nรคiden kahden aliohjelman vรคlillรค. Lisรคksi aiomme keskustella Oracle sisรครคnrakennetut toiminnot.
Terminologiat PL/SQL-aliohjelmissa
Ennen kuin opimme PL/SQL-aliohjelmista, keskustelemme erilaisista terminologioista, jotka ovat osa nรคitรค aliohjelmia. Alla on terminologiat, joista aiomme keskustella.
Parametri
Parametri on minkรค tahansa kelvollisen muuttuja tai paikkamerkki PL/SQL-tietotyyppi jonka kautta PL/SQL-aliohjelma vaihtaa arvoja pรครคkoodin kanssa. Tรคmรคn parametrin avulla voidaan antaa syรถtteitรค aliohjelmille ja tehdรค esimerkkejรค.tract nรคistรค aliohjelmista.
- Nรคmรค parametrit tulee mรครคrittรครค aliohjelmien kanssa luonnin yhteydessรค.
- Nรคmรค parametrit sisรคltyvรคt nรคiden aliohjelmien kutsulauseeseen arvojen vuorovaikuttamiseksi aliohjelmien kanssa.
- Aliohjelman parametrin ja kutsuvan kรคskyn tietotyypin tulee olla sama.
- Tietotyypin kokoa ei tulisi mainita parametrien mรครคrittelyhetkellรค, koska koko on tรคlle tyypille dynaaminen.
Kรคyttรถtarkoituksensa perusteella parametrit luokitellaan
- IN-parametri
- OUT-parametri
- IN OUT -parametri
IN-parametri
- Tรคtรค parametria kรคytetรครคn syรถttรคmรครคn aliohjelmia.
- Se on vain luku -muotoinen muuttuja aliohjelmien sisรคllรค. Niiden arvoja ei voi muuttaa aliohjelman sisรคllรค.
- Kutsuvassa kรคskyssรค nรคmรค parametrit voivat olla muuttuja tai kirjaimellinen arvo tai lauseke, esimerkiksi se voi olla aritmeettinen lauseke, kuten '5*8' tai 'a/b', missรค 'a' ja 'b' ovat muuttujia. .
- Oletusarvoisesti parametrit ovat IN-tyyppiรค.
OUT-parametri
- Tรคtรค parametria kรคytetรครคn tulosteiden saamiseen aliohjelmista.
- Se on luku-kirjoitettava muuttuja aliohjelmien sisรคllรค. Niiden arvoja voidaan muuttaa aliohjelmien sisรคllรค.
- Kutsuvassa kรคskyssรค nรคiden parametrien tulee aina olla muuttujia, jotka sisรคltรคvรคt nykyisten aliohjelmien arvon.
IN OUT -parametri
- Tรคtรค parametria kรคytetรครคn sekรค syรถtteen antamiseen ettรค tulosteiden saamiseen aliohjelmista.
- Se on luku-kirjoitettava muuttuja aliohjelmien sisรคllรค. Niiden arvoja voidaan muuttaa aliohjelmien sisรคllรค.
- Kutsuvassa kรคskyssรค nรคiden parametrien tulee aina olla muuttujia, jotka sisรคltรคvรคt aliohjelmien arvon.
Nรคmรค parametrityypit tulee mainita aliohjelmia luotaessa.
PALATA
RETURN on avainsana, joka kรคskee kรครคntรคjรครค vaihtamaan ohjauksen aliohjelmasta kutsuvaan lauseeseen. Aliohjelmassa RETURN tarkoittaa yksinkertaisesti sitรค, ettรค ohjauksen on poistuttava aliohjelmasta. Kun ohjain lรถytรครค aliohjelmasta RETURN-avainsanan, sen jรคlkeinen koodi ohitetaan.
Normaalisti ylรค- tai pรครคlohko kutsuu aliohjelmia, ja sitten ohjaus siirtyy nรคistรค pรครคlauseista kutsuttuihin aliohjelmiin. RETURN aliohjelmassa palauttaa ohjauksen takaisin pรครคlauseeseensa. Funktioiden tapauksessa RETURN-lause palauttaa myรถs arvon. Tรคmรคn arvon tietotyyppi mainitaan aina funktion mรครคrittelyn yhteydessรค. Tietotyyppi voi olla mikรค tahansa kelvollinen PL/SQL-tietotyyppi.
Mikรค on menettelytapa PL/SQL:ssรค?
A menettely PL/SQL:ssรค on aliohjelmayksikkรถ, joka koostuu joukosta PL/SQL-kรคskyjรค, joita voidaan kutsua nimellรค. Jokaisella PL/SQL:n proseduurilla on oma yksilรถllinen nimi, jolla siihen voidaan viitata ja sitรค voidaan kutsua. Tรคmรค aliohjelmayksikkรถ Oracle tietokanta tallennetaan tietokantaobjektina.
Huomautus: Aliohjelma ei ole muuta kuin menettely, ja se on luotava manuaalisesti vaatimusten mukaisesti. Kun ne on luotu, ne tallennetaan tietokantaobjekteina.
Alla on Procedure-aliohjelmayksikรถn ominaisuudet PL/SQL:ssรค:
- Proseduurit ovat erillisiรค ohjelman lohkoja, jotka voidaan tallentaa jรคrjestelmรครคn tietokanta.
- Nรคitรค PLSQL-proseduureja voidaan kutsua viittaamalla niiden nimeen PL/SQL-kรคskyjen suorittamiseksi.
- Sitรค kรคytetรครคn pรครคasiassa prosessin suorittamiseen PL/SQL:ssรค.
- Siinรค voi olla sisรคkkรคisiรค lohkoja tai se voi olla mรครคritetty ja sisรคkkรคinen muiden lohkojen tai pakettien sisรคllรค.
- Se sisรคltรครค ilmoitusosan (valinnainen), suoritusosan, poikkeusten kรคsittelyosan (valinnainen).
- Arvot voidaan siirtรครค Oracle proseduurista tai haetaan prosessista parametrien kautta.
- Nรคmรค parametrit tulee sisรคllyttรครค kutsuvaan lauseeseen.
- SQL:n toimintosarjassa voi olla RETURN-kรคsky, joka palauttaa ohjauksen kutsuvaan lohkoon, mutta se ei voi palauttaa arvoja RETURN-kรคskyn kautta.
- Proseduureja ei voi kutsua suoraan SELECT-kรคskyistรค. Niitรค voidaan kutsua toisesta lohkosta tai EXEC-avainsanan kautta.
Syntaksi
CREATE OR REPLACE PROCEDURE <procedure_name> ( <parameterl IN/OUT <datatype> .. . ) [ IS | AS ] <declaration_part> BEGIN <execution part> EXCEPTION <exception handling part> END;
- CREATE PROCEDURE kรคskee kรครคntรคjรครค luomaan uuden proseduurin Oracle. Avainsana 'OR REPLACE' ohjeistaa kรครคntรคjรครค korvaamaan olemassa olevan menettelyn (jos sellainen on) nykyisellรค.
- Menettelyn nimen tulee olla yksilรถllinen.
- Avainsanaa "IS" kรคytetรครคn, kun tallennettu toimintosarja sisรครคn Oracle on sisรคkkรคinen joihinkin muihin lohkoihin. Jos menettely on erillinen, kรคytetรครคn "AS". Tรคmรคn koodausstandardin lisรคksi molemmilla on sama merkitys.
Esimerkki 1: Proseduurin luominen ja kutsuminen EXEC:llรค
Tรคssรค esimerkissรค aiomme luoda an Oracle menettely, joka ottaa nimen syรถtteeksi ja tulostaa tervetuloviestin tulosteena. Aiomme kรคyttรครค EXEC-komentoa menettelyn kutsumiseen.
CREATE OR REPLACE PROCEDURE welcome_msg (p_name IN VARCHAR2) IS BEGIN dbms_output.put_line (โWelcome '|| p_name); END; / EXEC welcome_msg (โGuru99โ);
Code Selitys:
- Code line 1: Proseduurin luominen nimellรค 'welcome_msg' ja yhdellรค parametrilla 'p_name', jonka tyyppi on 'IN'.
- Code line 4: Tervetuloviestin tulostaminen ketjuttamalla syรถtteen nimi.
- Toimenpide on koottu onnistuneesti.
- Code line 7: Proseduurin kutsuminen EXEC-komennolla ja parametrilla 'Guru99'. Proseduuri suoritetaan ja viesti tulostetaan muodossa โTervetuloaโ Guru99. "
Mikรค on Function?
Functions on erillinen PL/SQL-aliohjelma. Kuten PL/SQL-proseduurilla, funktioilla on yksilรถllinen nimi, jolla niihin voidaan viitata. Nรคmรค tallennetaan PL/SQL-tietokantaobjekteina. Alla on joitain toimintojen ominaisuuksia.
- Funktiot ovat erillinen lohko, jota kรคytetรครคn pรครคasiassa laskentatarkoituksiin.
- Funktio kรคyttรครค RETURN-avainsanaa palauttamaan arvon, ja tรคmรคn tietotyyppi mรครคritellรครคn luomishetkellรค.
- Funktion tulee joko palauttaa arvo tai korottaa poikkeusta, eli palautus on funktioissa pakollinen.
- Funktiota, jossa ei ole DML-kรคskyjรค, voidaan kutsua suoraan SELECT-kyselyssรค, kun taas funktiota, jossa on DML-toiminto, voidaan kutsua vain muista PL/SQL-lohkoista.
- Siinรค voi olla sisรคkkรคisiรค lohkoja tai se voi olla mรครคritetty ja sisรคkkรคinen muiden lohkojen tai pakettien sisรคllรค.
- Se sisรคltรครค ilmoitusosan (valinnainen), suoritusosan, poikkeusten kรคsittelyosan (valinnainen).
- Arvot voidaan siirtรครค funktioon tai hakea prosessista parametrien kautta.
- Nรคmรค parametrit tulee sisรคllyttรครค kutsuvaan lauseeseen.
- PLSQL-funktio voi palauttaa arvon myรถs muilla OUT-parametreilla kuin RETURN-toiminnolla.
- Koska se palauttaa aina arvon, kutsuvassa kรคskyssรค se liitetรครคn aina mรครคritysoperaattorin kanssa muuttujien tรคyttรคmiseksi.
Syntaksi
CREATE OR REPLACE FUNCTION <procedure_name> ( <parameterl IN/OUT <datatype> ) RETURN <datatype> [ IS | AS ] <declaration_part> BEGIN <execution part> EXCEPTION <exception handling part> END;
- CREATE FUNCTION ohjeistaa kรครคntรคjรครค luomaan uuden funktion. Avainsana 'OR REPLACE' ohjeistaa kรครคntรคjรครค korvaamaan olemassa olevan funktion (jos sellainen on) nykyisellรค.
- Toiminnon nimen tulee olla yksilรถllinen.
- RETURN-tietotyyppi on mainittava.
- Avainsanaa 'IS' kรคytetรครคn, kun proseduuri on upotettu joihinkin muihin lohkoihin. Jos menettely on erillinen, kรคytetรครคn "AS". Tรคmรคn koodausstandardin lisรคksi molemmilla on sama merkitys.
Esimerkki 1: Funktion luominen ja kutsuminen nimettรถmรคllรค lohkolla
Tรคssรค ohjelmassa aiomme luoda funktion, joka ottaa nimen syรถtteenรค ja palauttaa tervetuloviestin lรคhtรถnรค. Aiomme kรคyttรครค anonyymiรค lohkoa ja valita lauseketta kutsuaksesi funktiota.
CREATE OR REPLACE FUNCTION welcome_msgJune ( p_name IN VARCHAR2) RETURN VAR.CHAR2 IS BEGIN RETURN (โWelcome โ|| p_name); END; / DECLARE lv_msg VARCHAR2(250); BEGIN lv_msg := welcome_msg_func (โGuru99โ); dbms_output.put_line(lv_msg); END; SELECT welcome_msg_func(โGuru99:) FROM DUAL;
Code Selitys:
- Code line 1: Luodaan Oracle funktio, jonka nimi on 'welcome_msg_func' ja yksi parametri 'p_name', jonka tyyppi on IN.
- Code line 2: ilmoittaa palautustyypiksi VARCHAR2
- Code line 5: Palauttaa ketjutetun arvon 'Tervetuloa' ja parametrin arvon.
- Code line 8: Nimetรถn esto yllรค olevan toiminnon kutsumiseksi.
- Code line 9: Ilmoitetaan muuttuja, jonka tietotyyppi on sama kuin funktion palautustietotyyppi.
- Code line 11: funktion kutsuminen ja palautusarvon tรคyttรคminen muuttujaan 'lv_msg'.
- Code line 12: Muuttujan arvon tulostaminen. Tulosteena saat โTervetuloaโ Guru99 "
- Code line 14: Saman funktion kutsuminen SELECT-kรคskyn kautta. Palautusarvo ohjataan suoraan vakiolรคhtรถรถn.
Menettelyn ja funktion yhtรคlรคisyydet
- Molempia voidaan kutsua muista PL/SQL-lohkoista.
- Jos aliohjelmassa esitettyรค poikkeusta ei kรคsitellรค aliohjelmassa poikkeusten kรคsittely -osiossa, se etenee kutsuvaan lohkoon.
- Molemmilla voi olla niin monta parametria kuin tarvitaan.
- Molempia kรคsitellรครคn tietokantaobjekteina PL/SQL:ssรค.
Menettely Vs. Tehtรคvรค: Keskeiset erot
| menettely | Toiminto |
|---|---|
| Kรคytetรครคn pรครคasiassa tietyn prosessin suorittamiseen | Kรคytetรครคn pรครคasiassa laskelmien suorittamiseen |
| Ei voi kutsua SELECT-kรคskyรค | Funktiota, joka ei sisรคllรค DML-kรคskyjรค, voidaan kutsua SELECT-kรคskyssรค |
| Kรคytรค OUT-parametria palauttaaksesi arvon | Kรคytรค RETURN palauttaaksesi arvon |
| Arvon palauttaminen ei ole pakollista | Arvon palauttaminen on pakollista |
| RETURN yksinkertaisesti poistuu ohjauksesta aliohjelmasta. | RETURN sulkee ohjauksen aliohjelmasta ja palauttaa myรถs arvon |
| Palautustietotyyppiรค ei mรครคritetรค luonnin yhteydessรค | Palautustietotyyppi on pakollinen luomishetkellรค |
Sisรครคnrakennetut toiminnot PL/SQL:ssรค
PL / SQL sisรคltรครค erilaisia โโsisรครคnrakennettuja toimintoja merkkijonojen ja pรคivรคmรครคrรคtietotyyppien kanssa tyรถskentelemiseen. Tรครคllรค aiomme nรคhdรค yleisesti kรคytetyt toiminnot ja niiden kรคytรถn.
Muunnosfunktiot
Nรคitรค sisรครคnrakennettuja toimintoja kรคytetรครคn muuntamaan yksi tietotyyppi toiseksi tietotyypiksi.
| Toiminnon nimi | Kรคyttรถ | esimerkki |
|---|---|---|
| TO_CHAR | Muuntaa toisen tietotyypin merkkitietotyypiksi | TO_CHAR(123); |
| TO_DATE ( merkkijono, muoto ) | Muuntaa annetun merkkijonon pรคivรคmรครคrรคksi. Merkkijonon tulee vastata muotoa. |
TO_DATE('2015-JAN-15', 'VVVV-MA-PP'); ulostulo: 1 / 15 / 2015 |
| TO_NUMBER (teksti, muoto) |
Muuntaa tekstin tietyn muodon numerotyypiksi. Informat '9' tarkoittaa numeroiden mรครคrรครค |
Valitse TO_NUMBER('1234','9999') dualista;
ulostulo: 1234 Valitse TO_NUMBER('1,234.45','9,999.99') dualista; ulostulo: 1234 |
Merkkijonofunktiot
Nรคmรค ovat toimintoja, joita kรคytetรครคn merkkitietotyypissรค.
| Toiminnon nimi | Kรคyttรถ | esimerkki |
|---|---|---|
| INSTR(teksti, merkkijono, alku, esiintyminen) | Antaa tietyn tekstin sijainnin annetussa merkkijonossa.
|
Valitse INSTR('LENTOkone','E',2,1) dualista
ulostulo: 2 Valitse INSTR('LENTOkone','E',2,2) dualista ulostulo: 9 (2nd E) esiintyminen |
| SUBSTR (teksti, alku, pituus) | Antaa pรครคmerkkijonon alimerkkijonon arvon.
|
valitse substr('lentokone',1,7) dualista
ulostulo: aeropla |
| UPPER ( teksti ) | Palauttaa annetun tekstin isot kirjaimet | Valitse ylempi('guru99') dualista;
ulostulo: GURU99 |
| ALEMPI ( teksti ) | Palauttaa annetun tekstin pienet kirjaimet | Valitse alempi ('AerOpLane') dualista;
ulostulo: lentokone |
| INITCAP (teksti) | Palauttaa annetun tekstin aloituskirjaimella isolla kirjaimella. | Valitse ('guru99') dualista
ulostulo: Guru99 Valitse ('minun tarinani') dualista ulostulo: Minun tarinani |
| PITUUS ( teksti ) | Palauttaa annetun merkkijonon pituuden | Valitse PITUUS ('guru99') dualista;
ulostulo: 6 |
| LPAD (teksti, pituus, pad_char) | Tรคyttรครค vasemmalla puolella olevan merkkijonon annetulla pituudella (koko merkkijono) annetulla merkillรค | Valitse LPAD('guru99', 10, '$') dualista;
ulostulo: $$$$guru99 |
| RPAD (teksti, pituus, pad_char) | Tรคyttรครค oikealla puolella olevan merkkijonon annetulla pituudella (koko merkkijono) annetulla merkillรค | Valitse RPAD('guru99',10,'-') dualista
ulostulo: guru99-- |
| LTRIM ( teksti ) | Leikkaa tekstin alussa olevan valkoisen tilan | Valitse LTRIM( Guru99') kaksoisรครคnestรค;
ulostulo: Guru99 |
| RTRIM ( teksti ) | Leikkaa tekstin lopussa olevan valkoisen tilan | Valitse RTRIM(Guru99 ') kaksoismuodosta;
ulostulo; Guru99 |
Pรคivรคmรครคrรคtoiminnot
Nรคmรค ovat toimintoja, joita kรคytetรครคn pรคivรคmรครคrien kรคsittelyyn.
| Toiminnon nimi | Kรคyttรถ | esimerkki |
|---|---|---|
| ADD_MONTHS (pรคivรคmรครคrรค, kuukausien lukumรครคrรค) | Lisรครค pรคivรคmรครคrรครคn annetut kuukaudet | ADD_MONTH('2015-01-01',5);
ulostulo: 05 / 01 / 2015 |
| SYSDATE | Palauttaa palvelimen nykyisen pรคivรคmรครคrรคn ja kellonajan | Valitse SYSDATE dualista;
ulostulo: 10 4:2015:2 |
| TRUNK | Pรคivรคmรครคrรคmuuttujan pyรถristys pienempรครคn mahdolliseen arvoon | valitse sysdate, TRUNC(sysdate) dualista;
ulostulo: 10 4:2015:2 12 |
| ROUND | Pyรถristรครค pรคivรคmรครคrรคn lรคhimpรครคn ylรค- tai alarajaan | Valitse sysdate, ROUND(sysdate) dualista
ulostulo: 10 4:2015:2 14 |
| MONTHS_BETWEEN | Palauttaa kahden pรคivรคmรครคrรคn vรคlisten kuukausien mรครคrรคn | Valitse MONTHS_BETWEEN (sysdate+60, sysdate) dualista
ulostulo: 2 |
Yhteenveto
Tรคssรค luvussa olemme oppineet seuraavaa.
- Proseduurin luominen ja eri tavat kutsua sitรค
- Funktioiden luominen ja eri tapoja kutsua sitรค
- Menettelyn ja funktion yhtรคlรคisyydet ja erot
- Parametrit ja RETURN yleiset terminologiat PL/SQL-aliohjelmissa
- Yleisiรค sisรครคnrakennettuja toimintoja Oracle PL / SQL


