• Aucun résultat trouvé

Les curseurs paramétrés

N/A
N/A
Protected

Academic year: 2022

Partager "Les curseurs paramétrés"

Copied!
14
0
0

Texte intégral

(1)

Les curseurs paramétrés

Il est possible de réutiliser un même curseur avec des valeurs différentes, dans un même bloc PL/SQL :

DECLARE

CURSOR mon_curseur (param1 TYPE, param2 TYPE, ... ) IS mon_ordre_select ;

-- l’ordre select utilise les paramètres param1, param2...

BEGIN

OPEN mon_curseur (val1, val2,...) ; ...

CLOSE mon_curseur;

END;

(2)

Les curseurs paramétrés

Les types des paramètres sont les suivants : CHAR, NUMBER, DATE, BOOLEAN,

Leur longueur n’est pas spécifiée. Le passage des valeurs des paramètres s’effectue à l’ouverture du curseur.

(3)

Les curseurs paramétrés

DECLARE

CURSOR c_empp(s1 number,s2 number) IS SELECT *

FROM emp WHERE salaire between s1 and s2;

BEGIN

FOR eng IN c_empp(10000,21000) LOOP

DBMS_OUTPUT.PUT_LINE(eng.nom||' '||eng.salaire);

END LOOP;

END;

/

(4)

Mettre à jour des données avec un curseur : CURRENT-OF

la clause CURRENT-OF permet d’accéder directement, en modification ou en suppression, à la ligne que vient de

renvoyer l’ordre FETCH.

Au préalable, dans la déclaration du curseur, il faut réserver les lignes qui seront modifiées par la pose d’un verrou

d’intention (...FOR UPDATE OF colonne_à_ modifier...).

(5)

DECLARE

CURSOR mon_curseur IS SELECT nom, salaire, commission FROM emp FOR UPDATE OF sal ;

BEGIN

FOR ma_structure IN mon_curseur LOOP

IF ma_structure.comm IS NOT NULL THEN

-- si pas de commission, le salaire augmente de 5%

UPDATE emp SET salaire = salaire*1.05 WHERE CURRENT OF mon_curseur;

END IF;

END LOOP;

END;

(6)

Gestion des erreurs

Le PL/SQL disposait d’un mécanisme pour traiter les erreurs et les exceptions rencontrées dans les blocs PL/SQL.

Il existe deux grandes familles d’erreurs :

• celles retournées par Oracle (table inaccessible, conflit de mise à jour...) ;

• celles dues à l’écriture du programme utilisateur.

(7)

Gestion des erreurs

- Syntaxe d’utilisation des exceptions DECLARE

...

nom_erreur EXCEPTION ; ...

BEGIN ...

IF (problème rencontré) THEN RAISE nom_erreur ; ...

EXCEPTION

WHEN nom_erreur THEN (traitement de l’erreur);

END;

(8)

Gestion des erreurs

Pour les erreurs Oracle prédéfinies, vous n’avez pas besoin de placer une instruction d’appel à l’exception dans le code PL/SQL :

DECLARE ...

BEGIN ...

EXCEPTION

WHEN ZERO_DIVIDE THEN (traitement de l’erreur);

WHEN NO_DATA_FOUND THEN (traitement de l’erreur);

...

(9)

Gestion des erreurs :Procédure RAISE_APPLICATION_ERROR

La procédure RAISE_APPLICATION_ERROR

permet de définir ses propres messages et codes d’erreurs. Cette procédure évite le renvoi

d’exceptions non traitées car le numéro d’erreur

(inclus dans RAISE_APPLICATION_ERROR) sera communiqué à l’environnement appelant.

(10)

Gestion des erreurs :Procédure RAISE_APPLICATION_ERROR

RAISE_APPLICATION_ERROR(numéroErreur, message );

numéroErreur : valeur définie par l'utilisateur pour l'exception, comprise entre –20 000 et –20 999

message : chaîne de caractères (max 2 048 octets) décrivant l’erreur.

(11)

Les procédures

PROCEDURE ma_procedure (par1, par2, ...parn) IS -- zone de déclaration : des variables locales, des – – curseurs , des exceptions

BEGIN

-- traitements EXCEPTION

-- traitement des exceptions...

END;

(12)

Les procédures

Une variable paramètre doit se conformer à la syntaxe suivante :

nom_parametre [ IN | OUT | IN OUT ] type_du_paramètre

Le type_du_paramètre doit être NUMBER, CHAR, BOOLEAN... Ainsi, un type

NUMBER(7,2) n’est pas accepté.

(13)

Les fonctions

FUNCTION ma_fonction (par1,par2,...parn) RETURN type_de_la_variable_retournée IS -- zone de déclaration : des variables locales – des curseurs des exceptions

BEGIN

-- traitements

-- clause RETURN EXCEPTION

-- traitement des exceptions...

-- clause RETURN END;

(14)

Les fonctions

Une variable paramètre doit se conformer à la syntaxe suivante :

nom_parametre [ IN | OUT | IN OUT ] type_du_paramètre

Le type_du_paramètre doit être NUMBER, CHAR, BOOLEAN... Ainsi, un type

NUMBER(7,2) n’est pas accepté.

Pour la clause RETURN, il suffit d’indiquer son type : NUMBER, CHAR, BOOLEAN, sans lui donner de nom.

Références

Documents relatifs

Quelques éléments scientifiques issus des documents et/ou des connaissances bien choisis mais incomplets et insuffisamment mis en relation. De rares éléments scientifiques

4- Déplacer les curseurs en commençant par le plus gros. (avec la

- Définition de variables, Traitements conditionnels, Traitements répétitifs, Traitements des curseurs, Traitements des erreurs Les programmes PL/SQL sont organisés et

[r]

● Ouverture du curseur : OPEN exécute l’ordre SQL associé au curseur, identifie le result set et positionne le curseur avant le premier enregistrement.. ● Traitement des lignes

Toute utilisation commerciale ou im- pression systématique est constitutive d’une infraction pénale. Toute copie ou im- pression de ce fichier doit contenir la présente mention

[r]

Écrivez une fonction qui vérifie qu’une liste passée en paramètre est triée dans l’ordre croissant ou décroissant (on renvoie False si elle est “désordonnée”, True