plsqlKomma igång med plsql


Anmärkningar

Det här avsnittet ger en översikt över vad plsql är, och varför en utvecklare kanske vill använda den.

Det bör också nämna alla stora ämnen inom plsql och länka till relaterade ämnen. Eftersom dokumentationen för plsql är ny kan du behöva skapa initialversioner av relaterade ämnen.

Om PLSQL

PL / SQL står för Procedural Language-tillägg till SQL. PL / SQL är endast tillgängligt som en "möjliggörande teknik" inom andra programvaruprodukter; det finns inte som ett fristående språk. Du kan använda PL / SQL i Oracle-relaterade databasen, i Oracle Server och i klientsidan applikationsutvecklingsverktyg, till exempel Oracle Forms. Här är några av de sätt du kan använda PL / SQL:

  1. Att bygga lagrade procedurer. .
  2. För att skapa databasutlösare.
  3. För att implementera klientsidan-logik i din Oracle Forms-applikation.
  4. För att länka en hemsida för en världsweb till en Oracle-databas.

Skapa en tabell

Nedan kommer vi att skapa en tabell med 3 kolumner.
Kolumnen Id måste fyllas i är, så vi definierar den NOT NULL .
I kolumnen Contract lägger vi också till en kontroll så att det enda tillåtna värdet är 'Y' eller 'N'. Om en insats i gjort och den här kolumnen inte specificeras under infogningen sätts ett 'N' in som standard.

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'))
);
 

Skapa eller byt ut en vy

I det här exemplet kommer vi att skapa en vy.
En vy används mest som ett enkelt sätt att hämta data från flera tabeller.

Exempel 1:
Visa med en markering på ett bord.

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

Exempel 2:
Visa med en markering i flera tabeller.

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;
 

För att ringa dessa vyer i en fråga kan du använda ett valt uttalande.

SELECT * FROM LessonView;
SELECT * FROM ClassRoomLessonView;
 

Definition av PLSQL

PL / SQL (Procedural Language / Structured Query Language) är Oracle Corporation: s procedurförlängning för SQL och Oracle-relationens databas. PL / SQL är tillgängligt i Oracle Database (sedan version 7), TimesTen i minnesdatabasen (sedan version 11.2.1) och IBM DB2 (sedan version 9.7).

Basenheten i PL / SQL kallas ett block, som består av tre delar: en deklarativ del, en körbar del och en undantagsbyggande del.

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

Deklarationer - Det här avsnittet börjar med nyckelordet DECLARE. Det är ett valfritt avsnitt och definierar alla variabler, markörer, underprogram och andra element som ska användas i programmet.

Exekverbara kommandon - Det här avsnittet är bifogat mellan nyckelorden BEGIN och END och det är ett obligatoriskt avsnitt. Det består av de körbara PL / SQL-satserna i programmet. Den borde ha minst en körbar kodrad, vilket kan vara ett NULL-kommando för att indikera att ingenting ska köras.

Undantagshantering - Det här avsnittet börjar med nyckelordet EXCEPTION. Det här avsnittet är åter valfritt och innehåller undantag (er) som hanterar fel i programmet.

Varje PL / SQL-uttalande slutar med en semikolon (;). PL / SQL-block kan kapslas in i andra PL / SQL-block med BEGIN och END.

I anonymt block krävs endast körbar del av blocket, andra delar är inte nödvändiga. Nedan är exempel på enkel anonym kod, som inte gör något annat än att utföra utan felrapportering.

BEGIN
    NULL;
END;
/ 
 

Saknande körbar instruktion leder till ett fel, eftersom PL / SQL inte stöder tomma block. Exempelvis leder körning av kod nedan till ett fel:

BEGIN
END;
/ 
 

Ansökan kommer att ge upp fel:

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
 

Symbol "*" i raden under sökordet "END;" betyder att blocket som slutar med detta block är tomt eller dåligt konstruerat. Varje körningsblock behöver instruktioner att göra, även om det inte gör någonting, som i vårt exempel.

Skillnad mellan% TYPE och% ROWTYPE.

%TYPE : Används för att deklarera ett fält med samma typ som i en specificerad tabells kolumn.

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

% ROWTYPE: Används för att deklarera en post med samma typer som finns i den angivna tabellen, vyn eller markören (= flera kolumner).

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

Hej världen

set serveroutput on

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

Kommandouppsättning set serveroutput on krävs i SQL * Plus- och SQL Developer-klienter för att aktivera utgången från dbms_output . Utan kommandot visas ingenting.

end; linje signalerar slutet på det anonyma PL / SQL-blocket. För att köra koden från SQL-kommandoraden kan du behöva skriva / i början av den första tomma raden efter den sista raden i koden. När koden ovan körs vid SQL-prompten ger den följande resultat:

Hello, World!

PL/SQL procedure successfully completed.