Oracle PL/SQL-tallennettu prosessi ja funktiot esimerkein

Tรคssรค opetusohjelmassa nรคet yksityiskohtaisen kuvauksen nimettyjen lohkojen luomisesta ja suorittamisesta (menettelyt ja toiminnot).

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

  1. IN-parametri
  2. OUT-parametri
  3. 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.

Toiminnot PL/SQL:ssรค

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.

Toiminnot PL/SQL:ssรค

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.

  • teksti โ€“ Pรครคmerkkijono
  • merkkijono โ€“ teksti, joka on etsittรคvรค
  • aloitus โ€“ haun aloituspaikka (valinnainen)
  • yhdenmukaisuus โ€“ haetun merkkijonon esiintyminen (valinnainen)
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.

  • teksti โ€“ pรครคmerkkijono
  • aloitusasento
  • pituus โ€“ pituus alimerkkijonoon
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

Tiivistรค tรคmรค viesti seuraavasti: