plsqlCommencer avec plsql


Remarques

Cette section fournit une vue d'ensemble de ce qu'est plsql et pourquoi un développeur peut vouloir l'utiliser.

Il devrait également mentionner tous les sujets importants dans plsql, et établir un lien avec les sujets connexes. La documentation de plsql étant nouvelle, vous devrez peut-être créer des versions initiales de ces rubriques connexes.

À propos de PLSQL

PL / SQL signifie Extensions du langage procédural à SQL. PL / SQL est disponible uniquement en tant que "technologie habilitante" au sein 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 que Oracle Forms. Voici quelques exemples d'utilisation de PL / SQL:

  1. Pour construire des procédures stockées .
  2. Pour créer des déclencheurs de base de données.
  3. Pour implémenter la logique côté client dans votre application Oracle Forms.
  4. Pour lier une page d'accueil World Wide Web à une base de données Oracle.

Créer une table

Ci-dessous, nous allons créer une table avec 3 colonnes.
L' Id colonne doit être rempli, nous le définissons donc NOT NULL .
Sur la colonne Contract nous ajoutons également une coche afin que la seule valeur autorisée soit "Y" ou "N". Si un insert est terminé et que cette colonne n'est pas spécifiée pendant 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'))
);
 

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 d'extraire des données de plusieurs tables.

Exemple 1:
Afficher 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;
 

Définition de PLSQL

PL / SQL (Langage procédural / Langage de requête structuré) 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 s'appelle un bloc composé de trois parties: une partie déclarative, une partie exécutable et une partie de construction d'exception.

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 et définit toutes les variables, curseurs, sous-programmes et autres éléments à utiliser dans le programme.

Commandes exécutables - Cette section est placée entre les mots-clés BEGIN et END. Il s'agit d'une section obligatoire. Il comprend les 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 traitent 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 en utilisant BEGIN et END.

En bloc anonyme, seule la partie exécutable du bloc est requise, les autres parties ne sont pas indispensables. Vous trouverez ci-dessous un exemple de code anonyme simple, qui ne fait rien d'autre que de produire des rapports d'erreur.

BEGIN
    NULL;
END;
/ 
 

Les instructions exécutables manquantes entraînent une erreur, car PL / SQL ne prend pas en charge les blocs vides. Par exemple, l'exécution du code ci-dessous entraîne une erreur:

BEGIN
END;
/ 
 

L'application va générer 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 à faire, même s'il ne fait rien, comme dans notre exemple.

Différence entre% TYPE et% ROWTYPE.

%TYPE : Utilisé pour déclarer un champ du même type que celui d'une colonne de la 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;
/
 

Bonjour le monde

set serveroutput on

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

Le set serveroutput on commandes set serveroutput on est requis dans les clients SQL * Plus et SQL Developer pour activer la sortie de dbms_output . Sans la commande, rien ne s'affiche.

La end; line 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.