Langage PL/SQL
PL/SQL est un langage procédural propre à Oracle qui constitue une extension au langage SQL (langage non procédural).Des commandes SQL peuvent être incorporées au sein d’un code PL/SQL. Ces commandes sont dites des Commandes SQL incorporées.
Le code PL/SQL peut être utilisé dans des unités de programme stockées dans la base de données tels que les procédures, fonctions, et packages (groupes de procédures et fonctions). Ces unités de programmes sont dites stokées.
Si ces procédures ne sont pas stockées dans la base mais incorporées dans une application (outils de développement tel que Oracle FORMS DEVELOPER et Oracle REPORT DEVELOPER), elles sont dites des procédures applicatives.
Le code PL/SQL incorporé dans une unité de programme applicative ou stockée mais qui n’est pas nommée est appelé bloc anonyme. Un bloc anonyme ne portant pas de nom, ne peut de ce fait être stocké dans la base de données.
L’avantage d’une unité de programmes sockée c’est qu’elle peut être appelée par son nom depuis votre code d’application et Oracle stocke le résultat de l’analyse parse de l’unité dans la base de données (stockage persistant sur disque). Des gains considérables en termes de performances sont générés du fait que le résultat du parse est rendu disponible et persistant pour les prochaines réutilisations du code de l’unité.
Exemple de code PL/SQL :
DECLARE
numerator NUMBER;
denominator NUMBER;
the_ratio NUMBER;
lower_limit CONSTANT NUMBER := 0.72;
samp_num CONSTANT NUMBER := 132;
numerator NUMBER;
denominator NUMBER;
the_ratio NUMBER;
lower_limit CONSTANT NUMBER := 0.72;
samp_num CONSTANT NUMBER := 132;
BEGIN
SELECT x, y INTO numerator, denominator FROM result_table
WHERE sample_id = samp_num;
SELECT x, y INTO numerator, denominator FROM result_table
WHERE sample_id = samp_num;
the_ratio := numerator/denominator;
IF the_ratio > lower_limit THEN
INSERT INTO ratio VALUES (samp_num, the_ratio);
INSERT INTO ratio VALUES (samp_num, the_ratio);
ELSE
INSERT INTO ratio VALUES (samp_num, -1);
END IF;
INSERT INTO ratio VALUES (samp_num, -1);
END IF;
COMMIT;
EXCEPTION
WHEN ZERO_DIVIDE THEN
INSERT INTO ratio VALUES (samp_num, 0);
COMMIT;
WHEN OTHERS THEN
ROLLBACK;
WHEN ZERO_DIVIDE THEN
INSERT INTO ratio VALUES (samp_num, 0);
COMMIT;
WHEN OTHERS THEN
ROLLBACK;
END;
Explications :Ce code PL/SQL déclare plusieurs variables et constantes, puis calcule une valeur ratio (the_ratio) pour des valeurs (numerator, denominator ) sélectionnées à partir d’une table (result_table)
0 Commentaires