Curseurs de référence forts avec type de données d'enregistrement basé sur une table
Comme nous l'avons appris dans l'introduction aux curseurs de référence, il existe deux types de curseurs de référence PL/SQL dans la base de données Oracle.
- Curseurs de référence forts et
- Curseurs de référence faible
Nous explorerons tous les concepts de ces deux types de curseurs de référence dans cette série. Avec ce blog, nous commencerons par le premier qui est les curseurs Strong Ref avec un type de données d'enregistrement basé sur une table et avec un type de données d'enregistrement défini par l'utilisateur.
Qu'est-ce que les curseurs de référence forte PL/SQL dans la base de données Oracle ?
Un curseur de référence qui a un type de retour fixe est appelé un curseur de référence fort dans la base de données Oracle. En raison du type de retour fixe, les curseurs de référence forts ne peuvent être utilisés que de manière sélective. Par exemple avec ces instructions SELECT qui renvoient le résultat dont le type de données correspond à celui que vous avez fixé lors de la déclaration du curseur.
Pouvons-nous utiliser Strong Ref Cursor avec n'importe quelle instruction SELECT dans Oracle Database ?
Non, nous ne pouvons pas utiliser Strong Ref Cursors avec une instruction SELECT. Cela est dû au "type de retour" fixe.
Néanmoins, il ne peut être utilisé qu'avec les instructions SELECT qui renvoient le résultat dont le type de données correspond à la "clause de retour" du curseur.
Pouvons-nous utiliser n'importe quel type de données PL/SQL pour déclarer notre Strong Ref Cursor ?
Non, nous ne pouvons pas. De plus, le type de retour d'un curseur de référence forte doit toujours être un type de données d'enregistrement. Il peut s'agir soit d'un type de données d'enregistrement basé sur une table, soit d'un type de données d'enregistrement défini par l'utilisateur.
Exemple de curseurs de référence forts avec un type de données d'enregistrement basé sur une table
Écrivons un exemple. Ici, nous allons créer un curseur de référence fort avec un type de données d'enregistrement basé sur une table.
SET SERVEROUTPUT ON DECLARE /*Create Ref Pointer Type*/ TYPE my_RefCur IS REF CURSOR RETURN employees%ROWTYPE; /*Create Cursor Variable*/ cur_var my_RefCur; rec_var employees%ROWTYPE; BEGIN OPEN cur_var FOR SELECT * FROM employees WHERE employee_id = 100; FETCH cur_var INTO rec_var; CLOSE cur_var; DBMS_OUTPUT.PUT_LINE ('Employee '||rec_var.first_name||' has salary '||rec_var.salary||'.'); END; /
La création d'un curseur de référence est un processus en deux étapes.
Créez un type de pointeur de référence.
Nous devons d'abord créer un type de pointeur ref. Ainsi, en utilisant l'instruction TYPE, nous créons un pointeur Ref Cursor Type comme dans le code ci-dessus. Dans cette instruction, vous écrivez d'abord le mot-clé TYPE suivi du nom de votre curseur de référence. Ensuite, vous devez écrire une phrase réservée IS REF CURSOR. Il indiquera au compilateur que nous créons un type qui est REF CURSOR. Ensuite, vous devez spécifier la clause RETURN.
Par exemple
TYPE my_RefCur IS REF CURSOR RETURN employees%ROWTYPE;
Créer une variable de curseur
Dans la deuxième étape, nous créons une variable de curseur. Afin de créer une variable de curseur, vous devez d'abord écrire le nom de votre variable suivi du nom de votre curseur de référence. Par la suite, cette variable sera utilisée pour faire référence au curseur de référence sur lequel elle est créée.
Par exemple
cur_var my_RefCur;
Outre la variable de curseur dans le code ci-dessus, nous avons également une variable supplémentaire. Il s'agit à nouveau d'un type de données d'enregistrement basé sur une table et conçu à l'aide de la table "Employés". De plus, cette variable contiendra les données extraites du curseur.
rec_var employees%ROWTYPE;
Section d'exécution
Dans la section d'exécution de notre code, nous avons quatre instructions exécutables. Laissez-moi vous les expliquer.
-
OPEN FOR instruction
La première instruction est l'instruction OPEN FOR. Il associe l'instruction SELECT à la variable du curseur et ouvre le curseur pour l'instruction. En outre, il recherche également toutes les ressources nécessaires au traitement de l'instruction SELECT.
-
Instruction FETCH
Comme nous l'avons vu dans le didacticiel PL/SQL 26. Le processus de récupération des données à partir du curseur est appelé extraction. Par conséquent, nous récupérons ici les données du curseur de référence dans la variable d'enregistrement "Rec_Var".
-
Fermer la déclaration
Une fois que nous en avons terminé avec notre curseur, il est conseillé de le fermer afin que notre moteur / serveur Oracle puisse abandonner toutes les ressources qui lui sont associées. C'est exactement ce que nous avons fait dans la troisième déclaration. En utilisant le mot-clé CLOSE suivi de la variable de curseur, nous avons fermé notre curseur de référence.
-
Déclaration de sortie
La quatrième instruction est une instruction DBMS_OUTPUT. Il affichera le prénom et le salaire de l'employé avec l'identifiant d'employé 100.
Vous pouvez regarder le tutoriel PL/SQL 33 afin d'apprendre le fonctionnement d'une variable d'enregistrement basée sur une table.
Par conséquent, en conclusion…
Dans le code ci-dessus, nous avons créé un curseur de référence fort PL/SQL avec le nom "my_RefCur" qui renverra un type de données d'enregistrement basé sur une table de résultats. De plus, ce type de données d'enregistrement basé sur une table est pris en charge sur la table Employees du schéma HR. Ainsi, avant d'exécuter ce programme, nous devons nous assurer que nous sommes connectés au schéma RH de notre base de données.
De plus, si vous apprenez mieux en regardant une vidéo, en voici une pour vous. Allez-y et vérifiez-le.
Il s'agit du didacticiel sur la création de curseurs de référence forts PL/SQL à l'aide d'un type de données d'enregistrement basé sur une table dans la base de données Oracle. J'espère que vous avez appris quelque chose de nouveau. De plus, assurez-vous de partager ce blog sur vos réseaux sociaux avec vos amis.
Merci de votre visite. Restez à l'écoute car dans le prochain didacticiel, nous apprendrons à créer un curseur de référence fort avec une variable d'enregistrement définie par l'utilisateur.
Bonne journée !