plsqlIniziare con plsql


Osservazioni

Questa sezione fornisce una panoramica di cosa sia plsql e perché uno sviluppatore potrebbe volerlo utilizzare.

Dovrebbe anche menzionare qualsiasi argomento di grandi dimensioni all'interno di plsql e collegarsi agli argomenti correlati. Poiché la documentazione di plsql è nuova, potrebbe essere necessario creare versioni iniziali di tali argomenti correlati.

Informazioni su PLSQL

PL / SQL è l'acronimo di Estensioni procedurali del linguaggio a SQL. PL / SQL è disponibile solo come "tecnologia abilitante" all'interno di altri prodotti software; non esiste come lingua autonoma. È possibile utilizzare PL / SQL nel database relazionale Oracle, in Oracle Server e negli strumenti di sviluppo applicazioni lato client, come Oracle Forms. Ecco alcuni dei modi in cui è possibile utilizzare PL / SQL:

  1. Per costruire stored procedure. .
  2. Per creare trigger di database.
  3. Implementare la logica lato client nell'applicazione Oracle Forms.
  4. Per collegare una home page del World Wide Web a un database Oracle.

Crea un tavolo

Di seguito creeremo una tabella con 3 colonne.
L' Id colonna deve essere compilato, quindi lo definiamo NOT NULL .
Sulla colonna Contract aggiungiamo anche un assegno in modo che l'unico valore consentito sia 'Y' o 'N'. Se un inserto è fatto e questa colonna non è specificata durante l'inserimento, allora viene inserita una "N" predefinita.

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

Crea o sostituisci una vista

In questo esempio creeremo una vista.
Una vista è usata principalmente come un modo semplice di recuperare dati da più tabelle.

Esempio 1:
Visualizza con una selezione su un tavolo.

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

Esempio 2:
Visualizza con una selezione su più tabelle.

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;
 

Per chiamare questa vista in una query è possibile utilizzare un'istruzione select.

SELECT * FROM LessonView;
SELECT * FROM ClassRoomLessonView;
 

Definizione di PLSQL

PL / SQL (linguaggio procedurale / linguaggio di interrogazione strutturato) è l'estensione procedurale di Oracle Corporation per SQL e il database relazionale Oracle. PL / SQL è disponibile nel database Oracle (dalla versione 7), nel database in memoria TimesTen (dalla versione 11.2.1) e IBM DB2 (dalla versione 9.7).

L'unità di base in PL / SQL è chiamata blocco, che è costituito da tre parti: una parte dichiarativa, una parte eseguibile e una parte di costruzione di eccezioni.

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

Dichiarazioni - Questa sezione inizia con la parola chiave DECLARE. È una sezione facoltativa e definisce tutte le variabili, i cursori, i sottoprogrammi e altri elementi da utilizzare nel programma.

Comandi eseguibili : questa sezione è inclusa tra le parole chiave BEGIN e END ed è una sezione obbligatoria. Consiste delle istruzioni PL / SQL eseguibili del programma. Dovrebbe avere almeno una riga di codice eseguibile, che potrebbe essere solo un comando NULL per indicare che nulla deve essere eseguito.

Gestione delle eccezioni - Questa sezione inizia con la parola chiave ECCEZIONE. Questa sezione è di nuovo facoltativa e contiene le eccezioni che gestiscono gli errori nel programma.

Ogni istruzione PL / SQL termina con un punto e virgola (;). I blocchi PL / SQL possono essere nidificati all'interno di altri blocchi PL / SQL utilizzando BEGIN e END.

Nel blocco anonimo, è richiesta solo una parte eseguibile del blocco, altre parti non sono necessarie. Di seguito è riportato un esempio di semplice codice anonimo, che non fa altro che eseguire senza segnalazione degli errori.

BEGIN
    NULL;
END;
/ 
 

L'istruzione excecutable mancante porta a un errore, perché PL / SQL non supporta i blocchi vuoti. Ad esempio, l'esecuzione del codice sottostante porta a un errore:

BEGIN
END;
/ 
 

L'applicazione aumenterà l'errore:

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
 

Simbolo "*" nella riga sotto la parola chiave "FINE"; significa che il blocco che termina con questo blocco è vuoto o costruito male. Ogni blocco di esecuzione necessita di istruzioni da fare, anche se non fa nulla, come nel nostro esempio.

Differenza tra% TYPE e% ROWTYPE.

%TYPE : utilizzato per dichiarare un campo con lo stesso tipo di una colonna della tabella specificata.

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

% ROWTYPE: utilizzato per dichiarare un record con gli stessi tipi trovati nella tabella, nella vista o nel cursore specificati (= più colonne).

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

Ciao mondo

set serveroutput on

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

Il comando set serveroutput on è richiesto nei client SQL * Plus e SQL Developer per abilitare l'output di dbms_output . Senza il comando non viene visualizzato nulla.

La end; line segna la fine del blocco anonimo di PL / SQL. Per eseguire il codice dalla riga di comando SQL, potrebbe essere necessario digitare / all'inizio della prima riga vuota dopo l'ultima riga del codice. Quando il codice sopra riportato viene eseguito al prompt SQL, produce il seguente risultato:

Hello, World!

PL/SQL procedure successfully completed.