plsql Tutoriel
Commencer avec plsql
Recherche…
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.
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.
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.
À 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:
- 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 World Wide Web à une base de données Oracle.
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;
/
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;
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'))
);