Articles

Oracle PL/SQL Curseur: Implicite, Explicite, du Curseur DE la Boucle [Exemple]

qu’est-Ce que le CURSEUR en PL/SQL?

Un curseur est un pointeur vers cette zone de contexte. Oracle crée une zone de contexte pour le traitement d’une instruction SQL qui contient toutes les informations sur l’instruction.

PL / SQL permet au programmeur de contrôler la zone de contexte via le curseur. Un curseur contient les lignes renvoyées par L’instruction SQL. L’ensemble de lignes que le curseur contient est appelé ensemble actif., Ces curseurs peuvent également être nommés afin qu’ils puissent être référencés à partir d’un autre endroit du code.

Dans ce tutoriel, vous allez apprendre-

  • Curseur Implicite
  • Explicite Curseur
  • les Attributs de Curseur
  • POUR la Boucle Curseur de l’instruction

Le curseur est de deux types.

  • Curseur Implicite
  • Explicite Curseur

Curseur Implicite

Chaque fois que toutes les opérations DML dans la base de données, un curseur implicite est créé qui contient les lignes concernées, en particulier l’opération., Ces curseurs ne peuvent pas être nommés et, par conséquent, ils ne peuvent pas être contrôlés ou référencés à partir d’un autre endroit du code. Nous ne pouvons faire référence qu’au curseur le plus récent à travers les attributs du curseur.

curseur explicite

Les programmeurs sont autorisés à créer une zone de contexte nommée pour exécuter leurs opérations DML afin d’en avoir plus de contrôle. Le curseur explicite doit être défini dans la section déclaration du bloc PL/SQL, et il est créé pour l’instruction ‘SELECT’ qui doit être utilisée dans le code.

Voici les étapes qui impliquaient de travailler avec des curseurs explicites.,

  • déclarer le curseur

    déclarer le curseur signifie simplement créer une zone de contexte nommée pour l’instruction ‘SELECT’ définie dans la partie déclaration. Le nom de cette zone de contexte est identique au nom du curseur.

  • ouvrir le curseur

    l’ouverture du curseur demandera au PL / SQL d’allouer la mémoire pour ce curseur. Cela rendra le curseur prêt à récupérer les enregistrements.

  • récupération des données à partir du curseur

    dans ce processus, L’instruction ‘SELECT’ est exécutée et les lignes récupérées sont stockées dans la mémoire allouée., Ceux-ci sont maintenant appelés ensembles actifs. La récupération de données à partir du curseur est une activité au niveau de l’enregistrement qui signifie que nous pouvons accéder aux données de manière enregistrement par enregistrement.

    chaque instruction fetch récupère un ensemble actif et contient les informations de cet enregistrement particulier. Cette instruction est identique à l’instruction’ SELECT ‘qui récupère l’enregistrement et affecte la variable dans la clause’ INTO’, mais elle ne lèvera aucune exception.

  • fermeture du curseur

    Une fois que tout l’enregistrement est récupéré maintenant, nous devons fermer le curseur afin que la mémoire allouée à cette zone de contexte soit libérée.,

Syntaxe:

  • Dans la syntaxe ci-dessus, la déclaration de partie contient la déclaration du curseur et le variable dans laquelle les données extraites seront assignés.
  • le curseur est créé pour L’instruction ‘SELECT’ qui est donnée dans la déclaration du curseur.
  • dans la partie exécution, le curseur déclaré est ouvert, récupéré et fermé.

attributs du curseur

le curseur implicite et le curseur explicite ont certains attributs accessibles. Ces attributs donnent plus d’informations sur les opérations du curseur., Vous trouverez ci-dessous les différents attributs du curseur et leur utilisation.

attribut de curseur Description
%FOUND il renvoie le résultat booléen « TRUE » si l’opération de récupération la plus récente a récupéré un enregistrement avec succès, sinon il retournera FALSE.
%NOTFOUND cela fonctionne à l’opposé de %FOUND, il retournera ‘TRUE’ si l’opération de récupération la plus récente n’a pu récupérer aucun enregistrement.,
%ISOPEN Elle renvoie la valeur Booléenne « TRUE » si le curseur est déjà ouvert, sinon il renvoie ‘FALSE’
%ROWCOUNT Elle retourne la valeur numérique. Il donne le nombre réel d’enregistrements qui ont été affectés par l’activité DML.

Exemple 1: Dans cet exemple, nous allons voir comment déclarer, ouvrir, d’extraire et de fermer le curseur explicite.

Nous projetterons tout le nom de l’employé de la table emp à l’aide d’un curseur., Nous utiliserons également l’attribut cursor pour définir la boucle pour récupérer tout l’enregistrement du curseur.

Sortie

Employee Fetched:BBBEmployee Fetched:XXXEmployee Fetched:YYY Total rows fetched is 3

Explication du Code:

  • ligne de Code 2: déclaration du curseur guru99_det pour instruction « SELECT emp_name DE pge ».
  • ligne de Code 3: déclarer la variable lv_emp_name.
  • ligne de Code 5: Ouverture du curseur guru99_det.
  • ligne de Code 6: définir l’instruction de boucle de base pour récupérer tous les enregistrements de la table ’emp’.,
  • ligne de Code 7: récupère les données guru99_det et affecte la valeur à lv_emp_name.
  • ligne de Code 9: utilisation de l’attribut de curseur ‘% NOTFOUND ‘ pour savoir si tout l’enregistrement du curseur est récupéré. S’il est récupéré, il retournera ‘TRUE’ et le contrôle quittera la boucle, sinon le contrôle continuera à récupérer les données du curseur et à imprimer les données.
  • ligne de Code 11: condition de sortie pour l’instruction loop.
  • ligne de Code 12: affiche le nom de l’employé récupéré.,
  • ligne de Code 14: utilisation de l’attribut de curseur ‘%ROWCOUNT’ pour trouver le nombre total d’enregistrements affectés/récupérés dans le curseur.
  • ligne de Code 15: après avoir quitté la boucle, le curseur est fermé et la mémoire allouée est libérée.

POUR la Boucle Curseur de l’instruction

« POUR la BOUCLE » déclaration peut être utilisé pour travailler avec les curseurs. Nous pouvons donner le nom du curseur au lieu de la limite de plage dans L’instruction FOR loop afin que la boucle fonctionne du premier enregistrement du curseur au dernier enregistrement du curseur., La variable cursor, l’ouverture du curseur, la récupération et la fermeture du curseur se feront implicitement par la boucle FOR.

Syntaxe:

DECLARECURSOR <cursor_name> IS <SELECT statement>;BEGIN FOR I IN <cursor_name> LOOP . . END LOOP;END;
  • Dans la syntaxe ci-dessus, la déclaration de partie contient la déclaration du curseur.
  • le curseur est créé pour L’instruction ‘SELECT’ qui est donnée dans la déclaration du curseur.
  • dans la partie exécution, le curseur déclaré est configuré dans la boucle FOR et la variable de boucle ‘I’ se comportera comme une variable de curseur dans ce cas.,

exemple 1: dans cet exemple, nous projetterons tout le nom de l’employé de la table emp à l’aide d’une boucle cursor-FOR.

Sortie

Employee Fetched:BBB Employee Fetched:XXXEmployee Fetched:YYY

Explication du Code:

  • ligne de Code 2: déclaration du curseur guru99_det pour instruction « SELECT emp_name DE pge ».
  • ligne de Code 4: Construction de la boucle ‘ FOR ‘ pour le curseur avec la variable de boucle lv_emp_name.
  • ligne de Code 5: Impression du nom de l’employé à chaque itération de la boucle.,
  • ligne de Code 8: quitter la boucle

Remarque: Dans Cursor-for loop, les attributs du curseur ne peuvent pas être utilisés car l’ouverture, la récupération et la fermeture du curseur se font implicitement par For loop.