How to Program med PL / SQL i Oracle 12c

July 17  by Eliza

Det er flere forskjellige måter å arbeide innenfor Oracle 12c database for å manipulere data. PL / SQL er en strukturert spørrespråk (SQL) med kraftigere programma contructs bygget rundt koden din. For eksempel PL / SQL-tilbud

  • Looping kontroll
  • Variabler
  • Hvis / så konstruerer
  • Feilhåndtering

Normal SQL egentlig ikke har noe av dette. Normal SQL er bra å bruke i kode som virker på spesifikke data i "nå". Det kan ikke gjøre noen datadrevne beslutninger. Du må vite hva disse dataene er - og hvordan du vil den skal se ut.

PL / SQL er også sikrere enn vanlig SQL. Som det står, når brukerne utføre SQL, må de ha tillatelser på de underliggende objektene som dataene bor. Men med PL / SQL, navngitte programmer kjøre med rettighetene til eieren.

På den måten kunne eieren av dataene skrive et program for å behandle dataene. Eieren gir da tilgang til programmet til brukeren, ikke de underliggende stedene. For eksempel si at du har et program som trekker en brukers lønn historie for dem å se.

Du ønsker ikke at brukeren skal kunne velge på den ansattes lønn tabellen. Og uten en PL / SQL-program, det er hva du må gjøre. Du kan kode det slik at når programmet kjører, henter programmet i den tilkoblede brukeren som en variabel og samler lønn historie for at brukeren bare.

PL / SQL er ofte det primære domenet for programutviklere. Som databaseadministrator (DBA), men du bør også være kjent med de grunnleggende premisser i koden og være i stand til å lese hvordan kode funksjoner. Selv om DBA ikke kan være programutviklere, vil du bli bedt om å bidra til å feilsøke kode eller melodi kode som kan være i form av PL / SQL-programmer.

Grunnleggende typer PL / SQL-programmer i Oracle 12c

PL / SQL-programmer kommer i mange former. PL / SQL-programmer er også noen ganger referert til som "programenheter". Se under for en oversikt over de vanligste typene av PL / SQL konstruerer du kommer over.

Navn Beskrivelse
ANONYM BLOCK Un-navngitte programmet som kjøres fra kommandolinjen
PROSEDYRE Lagres, oppkalt program som utfører en oppgaver
FUNKSJON Program som tar innspill, virker på det, og gir utskrifter
PAKKE Gruppe navngitte prosedyrer og / eller funksjoner som er relatert ved oppgaven
TRIGGER Programmet virker på utfallet av en annen handling; branner automatisk
Grunnleggende om PL / SQL blokk struktur i Oracle 12c

PL / SQL-programmene er bygget på blokken struktur. Det vil si at de kan deles inn i bestemte deler av programmet basert på funksjon. De deler av PL / SQL blokk avvike noe basert på den type program enhet, men de alle har lignende egenskaper. Her er en oversikt over de deler av en PL / SQL program enhet:

  • Deklarative: Denne delen inneholder navnet på enheten (hvis det heter) og eventuelle variabler. Variablene er navngitt, skrevet, og eventuelt initialisert i seksjonen. Programmet enheten vil ikke bli navngitt hvis det er kodet som en anonym blokk. En anonym blokk brukes når du er ofte å skrive et program for en engangs bruk.
  • Body: Dette er den delen som holder kjøttet av programmet. Den inneholder funksjonalitet og forretningslogikk som trengs for å behandle variablene og data. Du vil se ting som looper og hvis / deretter uttalelser i denne delen.
  • Unntak: Dette avsnittet definerer og håndterer eventuelle feil som kommer opp under behandlingen av kroppen. Hvis en feil blir riktig håndtert, ofte programmet kan fortsette å kjøre. Eller, i det minste, en utgang menings melding til sluttbrukeren. Hvis det oppstår en feil og er ikke håndteres av unntak delen, ofte programmet avbrytes med en standard feilmelding.
  • Slutt: Slutt delen inneholder ikke noe. Det betyr bare at programmet er ved slutten av sin behandling. Og i en pakke av mange prosedyrer, den endeseksjon som skiller det fra det neste prosedyren i listen.

Hvordan å kalle PL / SQL-programmer med Oracle 12c

PL / SQL-prosedyrer, funksjoner og pakker kalles i et par forskjellige måter. Du kan bruke EXECUTE-kommandoen, eller du kan ringe programmet som en del av en annen blokk. Triggers, på den annen side, ikke kalles fra kommandolinjen.

De utfører automatisk bare etter noen andre prosessen er fullført. For eksempel vil du kanskje en trigger til brann hver gang noen oppdaterer lønn kolonne i ansatte tabellen. Så, kanskje det trigger skyter en e-post til HR manager for å rapportere endringen.

DESCRIBE kommandoen kan også virke mot PL / SQL-programmer. Dette kan være nyttig hvis du ikke kjenner argumentene eller variabler at prosedyren kan ta for innspill. For eksempel si at du har en prosedyre som får lønn for en ansatt basert på fornavn og etternavn innspill. Prosedyren kalles get_sal.

SQL> Beskriv get_sal
PROSEDYRE get_sal
Argument Navn Type In / Out Standard?
------------------------------ -------------------- --- ------ --------
P_LAST_NAME VARCHAR2 IN
P_FIRST_NAME VARCHAR2 IN

Prosedyren tar til IN argumenter VARCHAR2 type.

Her er hvordan du ville utføre prosedyren med EXECUTE kommando, og bruker den ansatte Mike Whalen:

SQL> EXECUTE get_sal ('Whalen', 'Mike')
Mike, Whalen - Gjør: $ 8300
PL / SQL-prosedyren ble fullført.

Som nevnt tidligere, har Oracle en mengde forhånds levert pakker, prosedyrer og funksjoner for å administrere databasen. For å få en komplett liste, gå til følgende delen av dokumentasjonen som skisserer alle Oracle-leverte program enheter.

Her er noen eksempel Oracle-leverte programmer.

Navn Beskrivelse
DBMS_SCHEDULER Forvalter den interne databasen planleggeren
DBMS_STATS Samler statistikk om brukere, objekter, system, og hele databasen
SYSDATE Utganger gjeldende klokkeslett og dato for systemet
UTL_MAIL Verktøyet for e-post med funksjoner, for eksempel vedlegg, Kopi og Blindkopi
DBMS_METADATA Funksjon for å trekke objekt DDL ut av databasen blant andre oppgaver
DBMS_DATAPUMP API Forvalter Data Pump innenfor en PL / SQL-program