Summary: I denne vejledning lærer du om PL/SQL anonym blok, og hvordan du udfører den ved hjælp af SQL*Plus og SQL Developer-værktøjerne.
PL/SQL anonym blok oversigt
PL/SQL er et blokstruktureret sprog, hvis kode er organiseret i blokke. En PL/SQL-blok består af tre sektioner: deklaration, eksekverbar sektion og sektion til håndtering af undtagelser. I en blok er den eksekverbare sektion obligatorisk, mens deklarations- og undtagelseshåndteringssektionerne er valgfrie.
En PL/SQL-blok har et navn. Funktioner eller Procedurer er et eksempel på en navngiven blok. En navngiven blok gemmes i Oracle Database-serveren og kan genbruges senere.
En blok uden et navn er en anonym blok. En anonym blok gemmes ikke i Oracle Database-serveren, så den er kun til engangsbrug. PL/SQL-anonyme blokke kan dog være nyttige til testformål.
Det følgende billede illustrerer strukturen af en PL/SQL-blok:
1) Deklarationsafsnit
En PL/SQL-blok har et deklarationsafsnit, hvor du deklarerer variabler, allokerer hukommelse til cursors og definerer datatyper.
2) Eksekverbart afsnit
En PL/SQL-blok har et eksekverbart afsnit. Et eksekverbart afsnit starter med nøgleordet BEGIN
og slutter med nøgleordet END
. Den eksekverbare sektion skal have mindst én eksekverbar anvisning, selv om det er NULL
-anvisningen, der ikke gør noget.
3) Exception-handling-sektion
En PL/SQL-blok har en exception-handling-sektion, der starter med nøgleordet EXCEPTION
. Undtagelseshåndteringsafsnittet er det sted, hvor du fanger og håndterer undtagelser, der er rejst af koden i udførelsesafsnittet.
Bemærk, at en blok i sig selv er en eksekverbar anvisning, og derfor kan du indlejre en blok i andre blokke.
PL/SQL-anonym blok eksempel
Det følgende eksempel viser en simpel PL/SQL-anonym blok med ét eksekverbart afsnit.
Den eksekverbare sektion kalder DMBS_OUTPUT.PUT_LINE
-proceduren for at vise "Hello World"
-meddelelsen på skærmen.
Udfør en PL/SQL-anonym blok ved hjælp af SQL*Plus
Når du har koden for en anonym blok, kan du udføre den ved hjælp af SQL*Plus, som er en kommandolinjeinterface til udførelse af SQL-angivelser og PL/SQL-blokke, der leveres af Oracle Database.
Det følgende billede illustrerer, hvordan du udfører en PL/SQL-blok ved hjælp af SQL*Plus:
Først skal du oprette forbindelse til Oracle Database-serveren ved hjælp af et brugernavn og en adgangskode.
For det andet skal du aktivere serveroutput ved hjælp af kommandoen SET SERVEROUTPUT ON
, så DBMS_OUTPUT.PUT_LINE
-proceduren viser tekst på skærmen.
For det tredje skal du skrive blokkens kode og indtaste en skråstreg fremad ( /
) for at give SQL*Plus besked om at udføre blokken. Når du skriver forward-slash (/), vil SQL*Plus udføre blokken og vise Hello World
-meddelelsen på skærmen som vist i illustrationerne.
Bemærk, at du skal udføre SET SERVEROUTPUT ON
-kommandoen i hver session, du opretter forbindelse til Oracle-databasen, for at vise meddelelsen ved hjælp af DBMS_OUTPUT.PUT_LINE
-proceduren.
For at udføre den blok, du har indtastet igen, bruger du kommandoen /
i stedet for at skrive alt fra bunden:
Hvis du ønsker at redigere kodeblokken, skal du bruge kommandoen edit
. SQL*Plus skriver kodeblokken til en fil og åbner den i en teksteditor som vist på følgende billede:
Du kan ændre indholdet af filen på følgende måde:
Og gem og luk filen. Filens indhold vil blive skrevet til bufferen og genkompileret.
Dernæst kan du udføre kodeblokken igen, den vil bruge den nye kode:
Udfør en PL/SQL-anonym blok ved hjælp af SQL Developer
Først skal du oprette forbindelse til Oracle Database-serveren ved hjælp af Oracle SQL Developer.
For det andet skal du oprette en ny SQL-fil ved navn anonymous-block.sql
, der befinder sig i mappen C:\plsql
, som skal gemme PL/SQL-koden.
For det tredje skal du indtaste PL/SQL-koden og udføre den ved at klikke på knappen Execute eller trykke på tastaturgenvejen Ctrl-Enter.
Mere eksempler på PL/SQL anonym blok
I dette eksempel deklarerer vi først en variabel l_message
, der indeholder hilsenmeddelelsen. Og derefter bruger vi i udførelsesafsnittet DBMS_OUTPUT.PUTLINE
-proceduren til at vise indholdet af denne variabel i stedet for at bruge en bogstavelig streng.
Her er resultatet:
Hello World!
Det næste anonyme blokeksempel tilføjer et afsnit til håndtering af undtagelser, som fanger ZERO_DIVIDE
undtagelsen, der er rejst i udførelsesafsnittet, og viser en fejlmeddelelse.
Fejlemeldingen er:
ORA-01476: divisor is equal to zero
Nu skulle du vide, hvordan du opretter PL/SQL-anonyme blokke og udfører dem ved hjælp af SQL*Plus og Oracle SQL Developer-værktøjerne.
- Har denne vejledning været nyttig?
- JaNej