create or replace procedure proseduurin_nimi ( < parametrit > ) is paikalliset tietorakenteet begin proseduurin_runko end; / show errors EXITjos tiedoston nimi olisi pros1.pl se käännettäisiin komennolla: sqlplus / @pros1.pl
Proseduurin toimivuutta voi testata sqlplus-ympäristössä seuraavasti:
Tulosta voi sitten ihailla tiedostosta (tiedosto.joku yllä). Tulos tulee myös näytölle ellei sitä erikseen estetä. Syntyneen html-sivun voi tarkistuttaa vaikkapa WEBTechsin validointipalvelussa.
SQL> set serveroutput on tk-palvelin tulostakoon SQL> spool tiedosto.joku ohjataan tulostus tiedostoon SQL> execute proseduurin_nimi(parametrit) suoritetaan proseduuri SQL> execute owa_util.showpage varsinainen tulostus
select sarake1 into muuttuja from ops$virtanen.testi where avain=123
$INFOTYO/sallikaikki | Sallii kaikki operaatiot kaikille tauluille ja antaa suoritusoikeudet kaikkiin käyttäjän proseduureihin |
$INFOTYO/sallitaulu taulu | Sallii kaikki operaatiot tauluun taulu |
$INFOTYO/salliluku taulu | Salliin vain taulun taulu lukemisen |
$INFOTYO/sallisuoritus proseduuri | Sallii proseduurin proseduuri suorituksen |
$INFOTYO/estakaikki | Peruu kaikki myönnetyt oikeudet |
$INFOTYO/estataulu taulu | Peruu kaikki oikeudet tauluun taulu |
Paketin lähdekoodista voit katsoa proseduurien määrittelyitä. Proseduurit ovat:
back(n int := -1); | liittää dokumenttiin Javascript linkit historiassa edelliseen ja seuraavaan dokumentiin siirtymiseksi. Tätä vastaavat napit tulevat mukaan header-proseduurilla, joten tätä ei erikseen pitäisi tarvita. |
footer( cdate varchar2, csignature varchar2); | päiväys ja csignature lopputeksti pienellä sivun alalaitaan |
formFieldsOpen(curl varchar2, cmethod varchar2); | aloittaa lomakkeen sekä liittää siihen käsittelijän (curl) ja parametrinvälitystavan (get,post - jälkimmäistä suositellaan) |
formfieldsClose; | lopettaa lomakkeen kenttäosuuden. Napit kannattaa laittaa erilliseksi nappiriviksi tämän jälkeen. Lomake lopetettava formEnd käskyllä. |
formField(cprompt varchar2, cname varchar2, csize integer, cmaxlength integer, cvalue varchar2); | määrittelee lomakkeen kentän. cprompt on kentän vasemmalle puolelle tuleva prompti, cname kentän nimi ja cvalue alkuarvo. |
formStandardButtons2(csubmit varchar2, creset varchar2); | määrittelee kaksi nappia submit ja reset ja niiden tekstit |
formButtonRowOpen | aloittaa nappirivistön |
formButtonRowItem(ctype varchar2, cname varchar2, cvalue varchar2); | Nappi nappirivistöön: ctype ilmoittaa napin tyypin (submit/reset), cname on napin nimi (jos submit napille annetaan nimi aiheuttaa nappi parametrin lähetyksen kutsuttavalle proseduurille - voidaan vättää antamalla cname parametrille arvo NULL), cvalue on napin teksti ja mahdollisesti syntyvän parametrin arvo |
formButtonRowClose | Sulkee nappirivistön |
formEnd | lopettaa lomakkeen |
formFieldText(cprompt varchar2, cname varchar2, cvalue varchar2, nrows int := 3, ncols int := 40); | kuten form field, määrittelee monirivisen syöttökentän |
formStandardButtons4; | määrittelee neljä nappia, yksi reset( alkuarvo) ja kolme submit-nappia (name=optype, value= Päivitä | Uusi tietue | Poista) Submit nappia vastaava optype-parametri tulee mukaan kutsuun. |
header(ctitle varchar2, cinst_url varchar2, cbgr varchar2); | määrittelee lomakkeen otsakkeen. ctitle on otsaketeksti. cinst_url linkki avustustekstiin, ja cbgr linkki taustakuvaan. Liittää dokumenttiin kuvalinkit historiassa edelliseen ja seuraavaan dokumenttii. |
shortMessage(cmsg varchar2); | ilmoitus lihavoituna |
Kyselylomakkeen käsittelee tietokantaproseduuri opiskelija_data . Proseduuri tuottaa tulossivun, jossa näkyvät hakuehdon täyttävien opiskelijoiden tiedot. Kokeile vaikkapa hakua nimellä 'Ville%'. Kysely kohdistuu Informaatiojärjestelmät kurssin esimerkkikantaan.
Kyselylomake ophaku3.html on samanlainen kuin kohdassa 2, mutta kyselyn käsittelevä proseduuri opiskelija_sel3 täydentää alkuperäisen sivun linkkilistalla löytyneistä opiskelijoista. Listasta valitsemisen käsittelee proseduuri opiskelija_crf, joka luo ylläpitolomakkeen valitun opiskelijan tietojen ylläpitoa varten. Tiedot lomakkeelle haetaan linkkiin liitetyn opiskelijatunnuksen perusteella.
Lomakkeeen lopussa on nappirivistö, jossa on yksi reset-nappi ja kolme submit-nappia. Submit-napin (päivitä, uusi tietue, poista) painamisen käsittelee proseduuri opiskelija_upd. Tämä tutkii, mitä submit-napeista on painettu ja suorittaa sen perusteella toiminnon. Poisto ei onnistu, muutos onnistuu. Proseduuri näyttää käsiteltävän rivin apuproseduurilla opiskelija_nayta.
Lisäystä varten luodaan uusi lomake proseduurilla opiskelija_uusi. Täytetty lomake käsitellään proseduurilla opiskelija_ins, joka vie tiedot kantaan.
CURSOR_ALREADY_OPEN | is raised if you try to OPEN an already open cursor |
DUP_VAL_ON_INDEX | is raised if you try to store duplicate values in a database column that is constrained by a unique index. |
INVALID_CURSOR | is raised if you try an illegal cursor operation. For example, if you try to CLOSE an unopened cursor. |
INVALID_NUMBER | is raised in a SQL statement if the conversion of a character string to a number fails. |
LOGIN_DENIED | is raised if you try logging on to ORACLE with an invalid username/password. |
NO_DATA_FOUND | is raised if a SELECT INTO statement returns no rows or if you reference an uninitialized row in a PL/SQL table |
NOT_LOGGED_ON | is raised if your PL/SQL program issues a database call without being logged on to ORACLE |
PROGRAM_ERROR | is raised if PL/SQL has an internal problem. |
TIMEOUT_ON_RESOURCE | is raised if a timeout occurs while ORACLE is waiting for a resource. |
TOO_MANY_ROWS | is raised if a SELECT INTO statement returns more than one row. |
VALUE_ERROR | is raised if an arithmetic, conversion, truncation, or constraint error occurs. |
ZERO_DIVIDE | is raised if you try to divide a number by zero. |