plsql Tutorial
Iniziare con plsql
Ricerca…
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.
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.
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.
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:
- Per costruire stored procedure. .
- Per creare trigger di database.
- Implementare la logica lato client nell'applicazione Oracle Forms.
- Per collegare una home page del World Wide Web a un database Oracle.
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;
/
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;
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'))
);