Sei sulla pagina 1di 8

Oracle 11g

-
SQL e PL/SQL

Distribuito tramite il sito www.manualioracle.it


Copyright © 2012 Assi Loris
Qualsiasi abuso sarà perseguito e punito secondo i termini di legge.
Version: 5.1.6

Alcuni termini usati sono trademarks registrati dei rispettivi proprietari.


Oracle 11g – SQL e PL/SQL

Sommario

Introduzione al Manuale..........................................................................................................................................4
Cap. 1 - Introduzione........................................................................................................................................5
1.1 – Introduzione ad Oracle...................................................................................................................................5
1.2 – SQL*Plus.......................................................................................................................................................5
1.3 – Introduzione all’SQL e al PL/SQL................................................................................................................7
Cap. 2 - Le basi dell’SQL in Oracle................................................................................................................8
2.1 – Elementi base dell’Oracle SQL.....................................................................................................................8
2.2 – Le tabelle EMP e DEPT.................................................................................................................................9
2.3 – Query e Subquery........................................................................................................................................12
2.4 – Le Pseudocolumns.......................................................................................................................................13
Cap. 3 - Comandi SQL Avanzati...................................................................................................................15
3.1 – Clausola WITH............................................................................................................................................15
3.2 – ISO/ANSI standard SQL: il CASE..............................................................................................................15
3.3 – ISO/ANSI standard SQL: Introduzione alla Inner Join...............................................................................17
3.4 – ISO/ANSI standard SQL: Tipi di Inner Join................................................................................................17
3.5 – ISO/ANSI standard SQL: Cross Join e Outer Join......................................................................................19
3.6 – MERGE SQL statement...............................................................................................................................20
3.7 – Altri SQL Statement....................................................................................................................................24
Cap. 4 - Introduzione ai PL/SQL Programs................................................................................................27
4.1 – Il PL/SQL Program Construct e i suoi Componenti....................................................................................27
4.2 – Variabili PL/SQL e non PL/SQL (bind variables).......................................................................................28
4.3 – I Subprograms..............................................................................................................................................29
4.4 – Come invocare una Procedura o Funzione..................................................................................................30
Cap. 5 - Le Procedure.....................................................................................................................................31
5.1 – Cosa è una stored procedure.......................................................................................................................31
5.2 – Creare e droppare una procedura.................................................................................................................31
5.3 – Formal and Actual Parameters.....................................................................................................................32
5.4 – Procedure con Parametri e i tipi di parameter modes..................................................................................34
5.5 – Invocare una procedura con parametri.........................................................................................................35
5.6 – Il subprogram nella declarative section di una Procedura...........................................................................36
5.7 – Come vengono propagate le Exception.......................................................................................................36
Cap. 6 - Le Funzioni........................................................................................................................................38
6.1 – Cosa è una stored function...........................................................................................................................38
6.2 – Creare, Invocare e rimuovere una Funzione................................................................................................38
6.3 – Vantaggi e restrizioni delle chiamate dagli SQL statement.........................................................................40
6.4 – Dove chiamare le Funzioni negli SQL statement........................................................................................41
6.5 – Differenze fra procedure e funzioni.............................................................................................................41
Cap. 7 - I Subprograms..................................................................................................................................42
7.1 – System Privileges, Object Privileges e Grant Privileges.............................................................................42
7.2 – Differenze fra Invokers Rights e Definers Rights........................................................................................43
7.3 – Le viste di dizionario per gestire gli stored objects.....................................................................................44
7.4 – Gestione della Fine Grained Dependency....................................................................................................45
Cap. 8 - I Package...........................................................................................................................................46
8.1 – Creare e Droppare Packages........................................................................................................................46
8.2 – Identificare un Package specification e un Package body...........................................................................47
8.3 – Usare la DESCRIBE per descrivere i package e i suoi componenti............................................................47
8.4 – Disegnare un Package Construct come Public o Private.............................................................................49
8.5 – Invocare un package construct.....................................................................................................................49
8.6 – Usare un bodiless package...........................................................................................................................50
8.7 – I benefit nell’uso dei Package......................................................................................................................50
8.8 – Package che usano l’overloading.................................................................................................................50
8.9 – Usare la Forward Referencing.....................................................................................................................51
8.10 – Inizializzare variabili con una one-time-only procedure............................................................................52
8.11 – Usare le PL/SQL tables e i records nei Package........................................................................................53
Cap. 9 - I Trigger.............................................................................................................................................55
9.1 – Definizione di trigger e Tipi di trigger.........................................................................................................55
9.2 – Progettare i Trigger e per cosa implementarli..............................................................................................55
9.3 – Creare un DML trigger................................................................................................................................56

2 www.manualioracle.it
Oracle 11g – SQL e PL/SQL

9.4 – I componenti del DML trigger.....................................................................................................................57


9.5 – I trigger row level, statement level..............................................................................................................58
9.6 – I conditional predicated in un trigger...........................................................................................................58
9.7 – Usare i qualifiers OLD e NEW in un DML Trigger....................................................................................59
9.8 – Creare un INSTEAD OF trigger..................................................................................................................61
9.9 – Differenze fra stored procedures e trigger...................................................................................................61
9.10 – Cambiare un Trigger Status o Rimuovere un Trigger...............................................................................62
9.11 – Eventi che fanno scattare il DB trigger......................................................................................................62
9.12 – Creare un trigger per un DDL statement....................................................................................................63
9.13 – Creare un trigger per un system event.......................................................................................................63
9.14 – Il CALL statement dentro un trigger.........................................................................................................64
9.15 – La mutating table.......................................................................................................................................65
9.16 – Privilegi e Dictionary views associate ai trigger........................................................................................66
Cap. 10 - Miscellaneous....................................................................................................................................67
10.1 – I SecureFile LOBs......................................................................................................................................67
10.2 – Usare APIs SQL e PL/SQL per accedere a SecureFile LOBs...................................................................68
10.3 – Native Dynamic SQL: l’Execute Immediate.............................................................................................69
10.4 – Oracle supplied Packages..........................................................................................................................70

www.manualioracle.it 3
Oracle 11g – SQL e PL/SQL

Introduzione al Manuale
Contenuto
In relazione al database Oracle 11.2, il presente manuale tratta:
- le basi dell’SQL
- le basi del linguaggio di programmazione PL/SQL

Audience
Il presente manuale è rivolto a chiunque voglia imparare le basi dell’SQL e del linguaggio PL/SQL.

Particolarità
Il presente manuale è in italiano ma molti termini tecnici in esso contenuti sono in lingua inglese.
Abbiamo fatto tale scelta perché spesso a lavoro tali termini vengono detti in inglese e perché riteniamo più utile che
i lettori del manuale conoscano tali termini nella lingua usata nella documentazione ufficiale Oracle.
Molti argomenti sono schematizzati al fine di fornire una comprensione ed una memorizzazione superiore.
A volte quando nel manuale si parla di una feature particolare, citiamo anche la versione Oracle in cui tale feature è
stata creata.

Alcune abbreviazioni usate:


db : database
es. : esempio
init parameter : initialization parameter
CBO : Cost Based Optimizer (ottimizzatore Oracle basato sul “costo”)

Principali Versioni
- 17.10.2012 : version 1.0 titolo “Oracle 11g PL/SQL”
- 18.10.2012 : version 1.1 varie modifiche e rilascio al pubblico
- 18.06.2013 : version 2.0 principale modifica: ora viene trattato anche l’SQL avanzato
- 03.01.2014 : version 2.5 varie modifiche e ora si chiama “Oracle 11g SQL Avanzato e PL/SQL”
- 02.11.2015 : version 4.1 varie modifiche sia nella parte SQL che nella parte PL/SQL
- 19.08.2017 : version 5.1 tolto l’SQL avanzato ed inserito l’SQL base

Disclaimer
Non si fornisce alcuna garanzia relativamente al fatto che il presente documento sia privo di errori. Non si assume
nessuna responsabilità sugli eventuali errori o danni derivanti dall’uso delle informazioni qui contenute.

4 www.manualioracle.it
Oracle 11g – SQL e PL/SQL

Cap. 1 - Introduzione

1.1 – Introduzione ad Oracle


Riteniamo utile fare una premessa sull’ambiente in cui si utilizza l’SQL e il PL/SQL e dunque qui forniamo una
breve definizione dei concetti più importanti riguardanti il database Oracle.

DBMS (Database Management System)


Software progettato per creare e manipolare in modo efficiente un database (ovvero un insieme di dati strutturati)
solitamente da parte di più utenti.
Fra i DBMS più diffusi c’è l’Oracle database, prodotto dalla società americana Oracle Corporation.

RDBMS (Relational Database Management System)


Come si evince dal suo nome in inglese, è un sistema di gestione del database basato sul modello relazionale.
Il modello relazionale è un modello logico di rappresentazione dei dati.
Secondo tale modello, qualsiasi dato può essere rappresentato come relazione. E tale relazione può essere
rappresentata graficamente tramite una tabella.

Oracle Server
E’ costituito da 2 principali componenti:
- Il database:

…………..
…………..
…………..

www.manualioracle.it 5
Oracle 11g – SQL e PL/SQL

Cap. 2 - Le basi dell’SQL in Oracle

2.1 – Elementi base dell’Oracle SQL


Gli elementi basilari da conoscere per capire i SQL statements in Oracle sono tanti e sono elencati nella
documentazione ufficiale della Oracle.

Qui trattiamo quelli più usati:


- I data types:
Ogni valore gestito da Oracle ha un data type.
Es.:
Quando crei una tabella, devi specificare un data type per ognuna delle sue colonne.
Quando crei una procedura o una funzione, devi specificare un data type per ognuno dei suoi
argomenti.
I data types più usati in Oracle sono:
- CHAR
- VARCHAR2
- NUMBER
- DATE
- BLOB
- CLOB

- Concatenation Operator:
Tramite il “doppio pipe” ( || ) puoi concatenere dati di tipo stringa e CLOB.
Es.:
SELECT 'Name is ' || last_name
FROM emp
ORDER BY last_name;

…………..
…………..
…………..

6 www.manualioracle.it
Oracle 11g – SQL e PL/SQL

Cap. 3 - Comandi SQL Avanzati

3.1 – Clausola WITH


Questa clausola serve a dare un nome ad un query block contenuto dentro una SELECT che richiama più volte tale
query block.

Alcune caratteristiche della WITH clause:


- ti permette di contenere multipli query blocks, separati da virgole
- a volte è utile per le performance e spesso è utile per una miglior leggibilità della query
- è internamente risolta come una in-line view o una temporary table; il CBO sceglie la risoluzione appropriata
Es:
Cerchiamo tutti i dipartimenti il cui totale dei salari è maggiore di 1/8 dei totali dei salari della ditta:
WITH summary as (
SELECT d.dept_name,
Sum(e.salary) as dept_total
FROM emp e,
dept d
WHERE e.deptno = d.deptno
GROUP BY d.dept_name)
SELECT dept_name, dept_total
FROM summary
WHERE dept_total >
(SELECT sum(dept_total) * 1/8
FROM summary )
ORDER BY dept_total DESC;

Senza la clausola WITH, questa query verrebbe scritta così:


…………..
…………..
…………..

www.manualioracle.it 7
Oracle 11g – SQL e PL/SQL

Cap. 4 - Introduzione ai PL/SQL Programs

4.1 – Il PL/SQL Program Construct e i suoi Componenti


Il costrutto base del PL/SQL è il cosiddetto PL/SQL block (blocco PL/SQL).

Il PL/SQL block è costituito da 3 componenti principali:


- La declaration section:
E’ usata per definire e inizializzare le variabili, le local subprogram, i tipi e i cursori usati nel blocco.
E’ facoltativa.
- La executable section:
E’ usata per definire le linee di comando dentro il blocco.
E’ obbligatoria.
- La exception handling section:
E’ usata per rispondere alle condizioni di errore che avvengono dentro il blocco.
E’ facoltativa.

Dunque ha questo formato :

DECLARE -- facoltativo
-- dichiarazioni delle variabili

BEGIN -- obbligatorio

…………..
…………..
…………..

8 www.manualioracle.it

Potrebbero piacerti anche