plsqlAan de slag met plsql


Opmerkingen

Deze sectie geeft een overzicht van wat plsql is en waarom een ontwikkelaar het misschien wil gebruiken.

Het moet ook alle grote onderwerpen binnen plsql vermelden en een link naar de gerelateerde onderwerpen bevatten. Aangezien de documentatie voor plsql nieuw is, moet u mogelijk eerste versies van die gerelateerde onderwerpen maken.

Over PLSQL

PL / SQL staat voor Procedural Language-uitbreidingen voor SQL. PL / SQL is alleen beschikbaar als een "activerende technologie" binnen andere softwareproducten; het bestaat niet als een zelfstandige taal. U kunt PL / SQL gebruiken in de relationele database van Oracle, in Oracle Server en in hulpprogramma's voor client-ontwikkeling van applicaties, zoals Oracle Forms. Hier zijn enkele manieren waarop u PL / SQL kunt gebruiken:

  1. Om opgeslagen procedures te bouwen. .
  2. Om database triggers te maken.
  3. Om client-side logica in uw Oracle Forms-toepassing te implementeren.
  4. Een World Wide Web-startpagina koppelen aan een Oracle-database.

Maak een tafel

Hieronder gaan we een tabel met 3 kolommen maken.
De kolom- Id moet zijn ingevuld, dus we definiëren deze NOT NULL .
In de kolom Contract voegen we ook een vinkje toe zodat de enige toegestane waarde 'Y' of 'N' is. Als een invoeging is voltooid en deze kolom niet is opgegeven tijdens de invoeging, wordt standaard een 'N' ingevoegd.

CREATE TABLE Employee (
        Id            NUMBER NOT NULL,
        Name          VARCHAR2(60),
        Contract      CHAR DEFAULT 'N' NOT NULL,
        ---
        CONSTRAINT p_Id PRIMARY KEY(Id),
        CONSTRAINT c_Contract CHECK (Contract IN('Y','N'))
);
 

Een weergave maken of vervangen

In dit voorbeeld gaan we een weergave maken.
Een weergave wordt meestal gebruikt als een eenvoudige manier om gegevens uit meerdere tabellen op te halen.

Voorbeeld 1:
Bekijk met een selectie op één tafel.

CREATE OR REPLACE VIEW LessonView AS
       SELECT     L.*
       FROM       Lesson L;
 

Voorbeeld 2:
Bekijk met een selectie op meerdere tafels.

CREATE OR REPLACE VIEW ClassRoomLessonView AS
       SELECT     C.Id, 
                  C.Name, 
                  L.Subject, 
                  L.Teacher 
       FROM       ClassRoom C, 
                  Lesson L 
       WHERE      C.Id = L.ClassRoomId;
 

Om deze views in een query aan te roepen, kunt u een select-statement gebruiken.

SELECT * FROM LessonView;
SELECT * FROM ClassRoomLessonView;
 

Definitie van PLSQL

PL / SQL (Procedural Language / Structured Query Language) is de procedurele extensie van Oracle Corporation voor SQL en de relationele database van Oracle. PL / SQL is beschikbaar in Oracle Database (sinds versie 7), TimesTen in-memory-database (sinds versie 11.2.1) en IBM DB2 (sinds versie 9.7).

De basiseenheid in PL / SQL wordt een blok genoemd, dat uit drie delen bestaat: een declaratief gedeelte, een uitvoerbaar gedeelte en een uitzonderingsgedeelte.

DECLARE
   <declarations section>
BEGIN
   <executable command(s)>
EXCEPTION
   <exception handling>
END;
 

Verklaringen - Deze sectie begint met het sleutelwoord DECLARE. Het is een optionele sectie en definieert alle variabelen, cursors, subprogramma's en andere elementen die in het programma moeten worden gebruikt.

Uitvoerbare opdrachten - Deze sectie is ingesloten tussen de trefwoorden BEGIN en END en het is een verplichte sectie. Het bestaat uit de uitvoerbare PL / SQL-instructies van het programma. Het moet ten minste één uitvoerbare coderegel hebben, die mogelijk alleen een NULL-opdracht is om aan te geven dat er niets moet worden uitgevoerd.

Behandeling van uitzonderingen - Deze sectie begint met het sleutelwoord UITZONDERING. Deze sectie is weer optioneel en bevat uitzondering (en) die fouten in het programma verwerken.

Elke PL / SQL-instructie eindigt met een puntkomma (;). PL / SQL-blokken kunnen worden genest in andere PL / SQL-blokken met behulp van BEGIN en END.

In een anoniem blok is alleen een uitvoerbaar deel van het blok vereist, andere delen zijn niet nodig. Hieronder is een voorbeeld van eenvoudige anonieme code, die niets anders doet dan uitvoeren zonder foutrapportage.

BEGIN
    NULL;
END;
/ 
 

Ontbrekende uitvoerbare instructies leiden tot een fout, omdat PL / SQL geen lege blokken ondersteunt. Uitzondering van onderstaande code leidt bijvoorbeeld tot een fout:

BEGIN
END;
/ 
 

Toepassing zal fout veroorzaken:

END;
*
ERROR at line 2:
ORA-06550: line 2, column 1:
PLS-00103: Encountered the symbol "END" when expecting one of the following:
( begin case declare exit for goto if loop mod null pragma
raise return select update while with <an identifier>
<a double-quoted delimited-identifier> <a bind variable> <<
continue close current delete fetch lock insert open rollback
savepoint set sql execute commit forall merge pipe purge
 

Symbool "*" in regel onder trefwoord "END;" betekent dat het blok dat eindigt met dit blok leeg of slecht is geconstrueerd. Elk uitvoeringsblok heeft instructies nodig om te doen, zelfs als het niets doet, zoals in ons voorbeeld.

Verschil tussen% TYPE en% ROWTYPE.

%TYPE : wordt gebruikt om een veld met hetzelfde type te declareren als dat van de kolom van een opgegeven tabel.

DECLARE
        vEmployeeName   Employee.Name%TYPE;
BEGIN
        SELECT Name 
        INTO   vEmployeeName
        FROM   Employee
        WHERE  RowNum = 1;
        
        DBMS_OUTPUT.PUT_LINE(vEmployeeName);
END;
/
 

% ROWTYPE: wordt gebruikt om een record met dezelfde typen te declareren als in de opgegeven tabel, weergave of cursor (= meerdere kolommen).

DECLARE
        rEmployee     Employee%ROWTYPE;
BEGIN
        rEmployee.Name := 'Matt';
        rEmployee.Age := 31;
        
        DBMS_OUTPUT.PUT_LINE(rEmployee.Name);
        DBMS_OUTPUT.PUT_LINE(rEmployee.Age);
END;
/
 

Hallo Wereld

set serveroutput on

DECLARE
   message constant varchar2(32767):= 'Hello, World!';
BEGIN
   dbms_output.put_line(message);
END;
/
 

Opdrachtset set serveroutput on is vereist in SQL * Plus- en SQL Developer-clients om de uitvoer van dbms_output . Zonder de opdracht wordt niets weergegeven.

Het end; regel geeft het einde aan van het anonieme PL / SQL-blok. Om de code vanaf de SQL-opdrachtregel uit te voeren, moet u mogelijk / aan het begin van de eerste lege regel na de laatste regel van de code typen. Wanneer de bovenstaande code wordt uitgevoerd bij SQL-prompt, levert dit het volgende resultaat op:

Hello, World!

PL/SQL procedure successfully completed.