Débuter avec plsql
Bonjour le monde
set serveroutput on
DECLARE
message constant varchar2(32767):= 'Hello, World!';
BEGIN
dbms_output.put_line(message);
END;
/
La commande set serveroutput on
est requise dans les clients SQL*Plus et SQL Developer pour activer la sortie de dbms_output
. Sans la commande, rien ne s’affiche.
La ligne end;
signale la fin du bloc PL/SQL anonyme. Pour exécuter le code à partir de la ligne de commande SQL, vous devrez peut-être taper /
au début de la première ligne vide après la dernière ligne du code. Lorsque le code ci-dessus est exécuté à l’invite SQL, il produit le résultat suivant :
Hello, World!
PL/SQL procedure successfully completed.
Définition de PLSQL
PL/SQL (Procedural Language/Structured Query Language) est l’extension procédurale d’Oracle Corporation pour SQL et la base de données relationnelle Oracle. PL/SQL est disponible dans Oracle Database (depuis la version 7), la base de données en mémoire TimesTen (depuis la version 11.2.1) et IBM DB2 (depuis la version 9.7).
L’unité de base en PL/SQL est appelée un bloc, composé de trois parties : une partie déclarative, une partie exécutable et une partie de création d’exceptions.
DECLARE
<declarations section>
BEGIN
<executable command(s)>
EXCEPTION
<exception handling>
END;
Déclarations - Cette section commence par le mot clé DECLARE. C’est une section facultative qui définit toutes les variables, curseurs, sous-programmes et autres éléments à utiliser dans le programme.
Commandes exécutables - Cette section est comprise entre les mots-clés BEGIN et END et c’est une section obligatoire. Il se compose des instructions PL/SQL exécutables du programme. Il doit avoir au moins une ligne de code exécutable, qui peut être juste une commande NULL pour indiquer que rien ne doit être exécuté.
Gestion des exceptions : cette section commence par le mot clé EXCEPTION. Cette section est à nouveau facultative et contient des exceptions qui gèrent les erreurs dans le programme.
Chaque instruction PL/SQL se termine par un point-virgule (;). Les blocs PL/SQL peuvent être imbriqués dans d’autres blocs PL/SQL à l’aide de BEGIN et END.
Dans un bloc anonyme, seule la partie exécutable du bloc est requise, les autres parties ne sont pas nécessaires. Vous trouverez ci-dessous un exemple de code anonyme simple, qui ne fait rien d’autre que fonctionner sans rapport d’erreur.
BEGIN
NULL;
END;
/
L’instruction exécutable manquante entraîne une erreur, car PL/SQL ne prend pas en charge les blocs vides. Par exemple, l’exécution du code ci-dessous conduit à une erreur :
BEGIN
END;
/
L’application générera une erreur :
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
Symbole " * " dans la ligne sous le mot-clé “END ;” signifie que le bloc qui se termine par ce bloc est vide ou mal construit. Chaque bloc d’exécution a besoin d’instructions à exécuter, même s’il ne fait rien, comme dans notre exemple.
Différence entre %TYPE et %ROWTYPE.
%TYPE
: utilisé pour déclarer un champ avec le même type que celui de la colonne d’une table spécifiée.
DECLARE
vEmployeeName Employee.Name%TYPE;
BEGIN
SELECT Name
INTO vEmployeeName
FROM Employee
WHERE RowNum = 1;
DBMS_OUTPUT.PUT_LINE(vEmployeeName);
END;
/
%ROWTYPE : utilisé pour déclarer un enregistrement avec les mêmes types que ceux trouvés dans la table, la vue ou le curseur spécifié (= plusieurs colonnes).
DECLARE
rEmployee Employee%ROWTYPE;
BEGIN
rEmployee.Name := 'Matt';
rEmployee.Age := 31;
DBMS_OUTPUT.PUT_LINE(rEmployee.Name);
DBMS_OUTPUT.PUT_LINE(rEmployee.Age);
END;
/
À propos de PLSQL
PL/SQL signifie extensions de langage procédural à SQL. PL/SQL n’est disponible qu’en tant que “technologie habilitante” dans d’autres produits logiciels ; il n’existe pas en tant que langage autonome. Vous pouvez utiliser PL/SQL dans la base de données relationnelle Oracle, dans le serveur Oracle et dans les outils de développement d’applications côté client, tels qu’Oracle Forms. Voici quelques façons d’utiliser PL/SQL :
- Pour construire des procédures stockées. .
- Pour créer des déclencheurs de base de données.
- Pour implémenter la logique côté client dans votre application Oracle Forms.
- Pour lier une page d’accueil du World Wide Web à une base de données Oracle.
Créer ou remplacer une vue
Dans cet exemple, nous allons créer une vue.
Une vue est principalement utilisée comme un moyen simple de récupérer des données à partir de plusieurs tables.
Exemple 1 :
Voir avec une sélection sur une table.
CREATE OR REPLACE VIEW LessonView AS
SELECT L.*
FROM Lesson L;
Exemple 2 :
Afficher avec une sélection sur plusieurs tables.
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;
Pour appeler ces vues dans une requête, vous pouvez utiliser une instruction select.
SELECT * FROM LessonView;
SELECT * FROM ClassRoomLessonView;
Créer un tableau
Ci-dessous, nous allons créer un tableau avec 3 colonnes.
La colonne Id
doit être remplie, nous la définissons donc NOT NULL
.
Dans la colonne “Contrat”, nous ajoutons également une coche afin que la seule valeur autorisée soit “Y” ou “N”. Si une insertion est terminée et que cette colonne n’est pas spécifiée lors de l’insertion, un ‘N’ est inséré par défaut.
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'))
);