Sammanfattning: I den här handledningen får du lära dig mer om det anonyma blocket PL/SQL och hur du utför det med hjälp av SQL*Plus och SQL Developer-verktygen.
Översikt över det anonyma blocket PL/SQL
PL/SQL är ett blockstrukturerat språk där koden är organiserad i block. Ett PL/SQL-block består av tre sektioner: deklaration, exekverbar sektion och sektion för undantagshantering. I ett block är den exekverbara sektionen obligatorisk medan deklarations- och undantagshanteringssektionerna är valfria.
Ett PL/SQL-block har ett namn. Funktioner eller procedurer är ett exempel på ett namngivet block. Ett namngivet block lagras i Oracle Database-servern och kan återanvändas senare.
Ett block utan namn är ett anonymt block. Ett anonymt block sparas inte i Oracle Database-servern, så det är bara för engångsanvändning. PL/SQL-anonyma block kan dock vara användbara för teständamål.
Följande bild illustrerar strukturen för ett PL/SQL-block:
1) Deklarationssektionen
Ett PL/SQL-block har en deklarationssektion där du deklarerar variabler, allokerar minne för markörer och definierar datatyper.
2) Exekverbar sektion
Ett PL/SQL-block har en exekverbar sektion. En körbar sektion börjar med nyckelordet BEGIN
och slutar med nyckelordet END
. Det körbara avsnittet måste ha minst ett körbart uttalande, även om det är NULL
som inte gör någonting.
3) Avsnitt för hantering av undantag
Ett PL/SQL-block har ett avsnitt för hantering av undantag som börjar med nyckelordet EXCEPTION
. Undantagshanteringsavsnittet är där du fångar upp och hanterar undantag som uppkommer av koden i exekveringsavsnittet.
Notera att ett block i sig självt är ett exekverbart uttalande, därför kan du bädda in ett block i andra block.
Exempel på anonyma PL/SQL-block
Nedan följer ett enkelt PL/SQL-anonymt block med ett exekverbart avsnitt.
Den körbara sektionen anropar DMBS_OUTPUT.PUT_LINE
-proceduren för att visa "Hello World"
-meddelandet på skärmen.
Exekvera ett PL/SQL-anonymt block med hjälp av SQL*Plus
När du väl har koden för ett anonymt block kan du exekvera det med hjälp av SQL*Plus, som är ett kommandoradsgränssnitt för att exekvera SQL-uttalanden och PL/SQL- block som tillhandahålls av Oracle Database.
Följande bild visar hur du utför ett PL/SQL-block med SQL*Plus:
Först ansluter du till Oracle Database-servern med ett användarnamn och lösenord.
För det andra slår du på serverns utdata med hjälp av kommandot SET SERVEROUTPUT ON
så att proceduren DBMS_OUTPUT.PUT_LINE
visar text på skärmen.
För det tredje skriver du blockets kod och anger ett snedstreck framåt ( /
) för att instruera SQL*Plus att utföra blocket. När du skriver forward-slash (/) kommer SQL*Plus att exekvera blocket och visa Hello World
-meddelandet på skärmen enligt illustrationerna.
Notera att du måste exekvera SET SERVEROUTPUT ON
-kommandot i varje session som du ansluter till Oracle-databasen för att kunna visa meddelandet med hjälp av DBMS_OUTPUT.PUT_LINE
-proceduren.
För att exekvera blocket som du har skrivit in igen använder du kommandot /
i stället för att skriva allt från början:
Om du vill redigera kodblocket använder du kommandot edit
. SQL*Plus skriver kodblocket till en fil och öppnar den i en textredigerare enligt följande bild:
Du kan ändra innehållet i filen på följande sätt:
Spara och stäng filen. Innehållet i filen kommer att skrivas till bufferten och kompileras om.
Därefter kan du exekvera kodblocket igen, det kommer att använda den nya koden:
Exekvera ett PL/SQL-anonymt block med hjälp av SQL Developer
Först ansluter du till Oracle-databasens server med hjälp av Oracle SQL Developer.
För det andra skapar du en ny SQL-fil med namnet anonymous-block.sql
som finns i katalogen C:\plsql
och som ska lagra PL/SQL-koden.
För det tredje skriver du in PL/SQL-koden och kör den genom att klicka på knappen Execute (Utför) eller trycka på kortkommandot Ctrl-Enter.
Mer PL/SQL anonymous block examples
I det här exemplet deklarerar vi först en variabel l_message
som innehåller hälsningsmeddelandet. Sedan använder vi DBMS_OUTPUT.PUTLINE
-proceduren i exekveringsavsnittet för att visa innehållet i denna variabel i stället för att använda en bokstavlig sträng.
Här är resultatet:
Hello World!
Nästa anonyma blockexempel lägger till ett undantagshanteringsavsnitt som fångar upp ZERO_DIVIDE
undantaget som uppstod i exekveringsavsnittet och visar ett felmeddelande.
Felmeddelandet är:
ORA-01476: divisor is equal to zero
Nu bör du veta hur man skapar PL/SQL-anonyma block och kör dem med hjälp av SQL*Plus och Oracle SQL Developer-verktygen.
- Har den här handledningen varit till hjälp?
- JaNej