# Oracle Database/PL/SQL

* Introduction
* Interfaces de gestion
* Gestion des utilisateurs
* Objets stockés
** Tablespaces
** Tables
** Vues
** Vues matérialisées
** Index
** Procédures stockées
** Fonctions
** Packages
** Trigger
** Séquences
* PL/SQL
** Considérations générales
*** Oracle ignore le type booléen
*** Oracle ignore l'autoincrement
** Quelques requêtes utiles
*** Dictionnaire de données
*** Paramètres système
*** Utiliser les dates
*** Modifier une ligne
*** Analyse d'une table
** Utilisation de fonctions
*** Fonction UNPIVOT
*** Fonction PIVOT
*** Fonction LISTAGG
*** Fonction TRIM
*** Fonction LENGTH
*** Fonction SUBSTR
*** Fonction DECODE
* Sécurité
* Net Services
* Serveurs partagés
* Monitoring des performances
* Maintenance proactive
* Gestion des annulations
* Conflits de verrouillage
* Sauvegardes et restaurations
* Bases de données multimédia
* Bases de données spatiotemporelles
* Deferrable constraint
* Débogage
* Désinstaller
* Introduction
* Interfaces de gestion
* Gestion des utilisateurs
* Objets stockés
** Tablespaces
** Tables
** Vues
** Vues matérialisées
** Index
** Procédures stockées
** Fonctions
** Packages
** Trigger
** Séquences
* PL/SQL
** Considérations générales
*** Oracle ignore le type booléen
*** Oracle ignore l'autoincrement
** Quelques requêtes utiles
*** Dictionnaire de données
*** Paramètres système
*** Utiliser les dates
*** Modifier une ligne
*** Analyse d'une table
** Utilisation de fonctions
*** Fonction UNPIVOT
*** Fonction PIVOT
*** Fonction LISTAGG
*** Fonction TRIM
*** Fonction LENGTH
*** Fonction SUBSTR
*** Fonction DECODE
* Sécurité
* Net Services
* Serveurs partagés
* Monitoring des performances
* Maintenance proactive
* Gestion des annulations
* Conflits de verrouillage
* Sauvegardes et restaurations
* Bases de données multimédia
* Bases de données spatiotemporelles
* Deferrable constraint
* Débogage
* Désinstaller
[ Modifier le sommaire ]
Consultez également ces pages dans d’autres projets Wikimedia :
* Article encyclopédique sur Wikipédia.
* Définition sur Wiktionnaire.
PL/SQL pour Procedural Language SQL est un langage de programmation d'Oracle, spécialisé dans l'accès à ses bases de données. C'est donc une extension de la norme SQL.

## Structure d'un programme

Le code PL/SQL est structuré en "blocs" dont la structure générale est la suivante :

### Commentaires
## Fonctions natives

PL/SQL offre plusieurs packages prédéfini :
* DBMS_OUTPUT : utilisé pour afficher des messages pendant l'exécution du code
* DBMS_JOB : permet de lancer du code en tâche de fond
* DBMS_XPLAN : permet d'obtenir le plan d'exécution d'une commande SQL
* DBMS_SESSION
* DBMS_METADATA
* UTL_FILE : permet de gérer les fichiers sur le disque, en dehors de la base
* UTL_HTTP
* UTL_SMTP

## Types du langage
### Types natifs

Les principaux types de donnée en PL/SQL sont : NUMBER, INTEGER, CHAR (chaine de longueur fixe), VARCHAR2 (chaine de longueur variable), DATE, TIMESTAMP, TEXT, etc.
Le symbole « := » est utilisé pour l’affectation d'une valeur.
Les types de chaînes de caractères, il existe plusieurs familles de types de textes :
| codage | nombre fixé de caractères | nombre variable de caractères |
| caractère | CHAR | VARCHAR2 |
| caractère Unicode (cf À la découverte d'Unicode ) | NCHAR | NVARCHAR2 |

### Créer un type
## Variables Composées
### Tableaux
#### Méthodes disponibles pour/avec les variables tableau

* Tab.first
* Tab.count
* Tab.next(indice)
* Tab.last
* Tab.prior(indice)
* Tab.delete(indice)

### Enregistrements
## Structures de contrôle
### Exemples

* Exemples 1
Mettre la date à jour dans la db
* Exemples 2
Créer un record qui contient matricule, nom, prénom
* Exemples 3
Chercher dans une table ListeDeCourse
* Exemples 4
Relevé méteo
* Exemples 5
Créer un tableau de 10 nombres
* Exemples 6
Augmenter de 10 % tous les logiciels Photoshop
* Exemples 7
Insérer un élément dans la table locaux
* Exemples 8
Vérifie si le prix du logiciel encodé est supérieur à la moyenne

## Curseurs

* Explicite :
Un curseur explicite est un curseur déclaré explicitement avec le mot-clef CURSOR dans le bloc PLSQL.
* Implicite :
Un curseur implicite est un curseur généré automatiquement par Oracle pour une commande SQL incluse généralement dans un bloc PLSQL.
* Exemples :
* Explicite :
* Implicite :

## Exceptions
### Exception prédéfinie

* Exemples 1
* Exemples 2
Cherche l'employé n°555 et prévois le cas ou il n'existe pas.
* Exemples 3
demander un nom à l'utilisateur et prévoir le cas où il inscrit trop de lettres

### Types d'exceptions prédéfinie

* invalid_cursor
* invalid_number
* no_data_found
* too_many_rows
* value_error
* zero_divide
* dup_val_on_index

### Exceptions personnalisées

* Exemple 1 :