Database
 sql >> Base de données >  >> RDS >> Database

Curseur de référence forte PL/SQL avec type de données d'enregistrement défini par l'utilisateur

Curseur de référence fort avec type de données d'enregistrement défini par l'utilisateur

Dans le didacticiel précédent, nous avons appris à créer un curseur de référence forte PL/SQL à l'aide d'une variable de type de données d'enregistrement basée sur une table. Là, j'ai démontré l'utilisation d'un curseur de référence fort pour gérer les données de toutes les colonnes de la table des employés. Par conséquent, cela soulève une inquiétude. Que se passe-t-il si nous voulons les données d'une colonne spécifique du tableau ? C'est exactement ce que nous allons aborder dans le tutoriel d'aujourd'hui.

Cependant, avant d'avancer dans ce tutoriel, je vous suggère de vous familiariser avec la connaissance des curseurs de référence PL/SQL. En particulier le curseur de référence fort et le type de données d'enregistrement défini par l'utilisateur. De plus, pour votre commodité, je fournis tous les liens nécessaires ici :

  • Comment créer un curseur de référence fort à l'aide d'un enregistrement basé sur une table
  • Que sont les types de données d'enregistrement définis par l'utilisateur ?

Le tutoriel précédent a montré avec succès comment un curseur PL/SQL Strong ref récupérait et gérait les données de toutes les colonnes d'une ligne. Mais que se passe-t-il si nous voulons les données d'une colonne spécifique d'une ligne ? Disons que nous voulons juste voir l'e-mail ou le salaire d'un employé. Par conséquent, nous ne voulons pas dépenser des ressources coûteuses pour récupérer toutes les informations inutiles. Alors, pouvons-nous utiliser ce même curseur de référence pour cela ? Découvrons.

Pouvons-nous utiliser le Strong Ref Cursor que nous avons créé dans le didacticiel précédent pour récupérer les données d'une colonne spécifique ?

La réponse à cette question est Non, nous ne pouvons pas .

Parce que ce curseur de référence fort a été créé à l'aide du type de données d'enregistrement basé sur une table. Pour illustrer, lorsque nous créons un type de données d'enregistrement basé sur une table, le moteur Oracle crée une structure de données composite. Cette structure est remplie de champs correspondant à chaque colonne de la table spécifiée.

De plus, tous ces champs sont automatiquement attribués avec le même nom et le même type de données que les colonnes de la table de base. Mais lorsqu'il s'agit d'initialiser un enregistrement à l'aide d'une colonne spécifique, nous devons effectuer tout ce travail manuellement.

Afin de le comprendre plus clairement, veuillez vous référer au tutoriel PL/SQL 34. J'y ai expliqué comment initialiser le type de données d'enregistrement et son fonctionnement en détail.

Alors, quelle est la solution à ce problème ?

Nous pouvons facilement résoudre ce problème. Nous pouvons créer un curseur de référence fort PL/SQL avec une variable de type de données d'enregistrement défini par l'utilisateur.

Exemple :curseur de référence fort PL/SQL avec variable de type de données d'enregistrement définie par l'utilisateur.

Par exemple, nous voulons créer un curseur de référence fort avec l'instruction SELECT. Qui renvoie uniquement le salaire de l'employé dont l'ID d'employé est 100.

SET SERVEROUTPUT ON;
DECLARE
	--Create User-Defined Record Datatype
    TYPE my_rec IS RECORD (
        emp_sal employees.salary%TYPE
        );
	--Declare Strong Ref Cursor
    TYPE RefCur IS REF CURSOR RETURN my_rec;
    cur_var REFCUR;
	--Another anchored datatype variable for holding data
    at_var  employees.salary%TYPE;
BEGIN
   OPEN cur_var FOR SELECT salary FROM employees WHERE employee_id = 100;
    FETCH cur_var INTO at_var;
    CLOSE cur_var;
    DBMS_OUTPUT.PUT_LINE ('Salary of the employee is '||at_var);
END;
/

Alors, cassons ce code et voyons ce qui se passe ici.

Section de déclaration

DECLARE
    TYPE my_rec IS RECORD (
        emp_sal employees.salary%TYPE
        );
    TYPE RefCur IS REF CURSOR RETURN my_rec;
    cur_var REFCUR;
    at_var  employees.salary%TYPE;

Voici notre section déclaration. Dans les trois premières lignes de cette section, nous avons créé notre type de données d'enregistrement défini par l'utilisateur avec le nom my_rec. De plus, ce type de données d'enregistrement défini par l'utilisateur n'a qu'un seul champ qui est emp_sal. Emp_sal est un champ de type de données ancré qui est conçu sur la colonne des salaires de la table des employés. Étant donné que emp_sal est de type de données ancré, il se verra automatiquement attribuer le type de données et la largeur de données de la colonne de base qui, dans ce cas, est le salaire.

Juste après cela, nous avons déclaré notre curseur de référence fort PL/SQL avec le nom "RefCur". Le type de retour de ce curseur de référence fort est "my_rec" . Suivi de la déclaration du curseur, nous avons créé une variable de curseur avec le nom cur_var. De plus, cette variable est utilisée pour faire référence au curseur de référence fort devant dans le code.

Outre la variable de curseur, nous avons également une autre variable déclarée dans cette section. Cette variable est "at_var", c'est encore une variable de type de données ancrée. Il est utilisé pour stocker les données retournées par le curseur.

Venons-en maintenant à la section d'exécution.

Section d'exécution

BEGIN
    OPEN cur_var FOR SELECT salary FROM employees WHERE employee_id = 100;
    FETCH cur_var INTO at_var;
    CLOSE cur_var;
    DBMS_OUTPUT.PUT_LINE('Salary of the employee is '||at_var);
END;
/

Cette section d'exécution comporte quatre lignes de codes exécutables. Voyons ce que c'est.

Ligne 1 :Ouvrir pour l'instruction

Cette instruction Ouvre dynamiquement le curseur mentionné. Ensuite, il attache l'instruction SELECT qui est spécifiée juste après le mot clé FOR.

Dans notre cas, cette instruction ouvre le curseur de référence forte à l'aide de la variable de curseur "cur_var" - une instruction SELECT. Qui renvoie uniquement les données de la "colonne des salaires" de la table des employés.

Ligne 2 :Extraire l'instruction

Cette instruction va récupérer les données du curseur de référence et les stocker dans la variable "at_var". Il est tout aussi important de s'assurer que le type de données des données récupérées et celui de la variable dans laquelle les données sont stockées doivent correspondre. Sinon, il y aura une erreur.

Ligne 3 :Fermer l'instruction

La troisième ligne est une déclaration proche. Fermer un curseur dont vous avez terminé est une bonne pratique.

Ligne 4 :Instruction de sortie

Enfin, la dernière instruction de la section d'exécution est l'instruction DBMS_OUTPUT. Et il affiche le salaire de l'employé à l'utilisateur.

Ces quatre lignes complètent la partie exécution de ce bloc PL/SQL. De plus, l'exécution réussie de ce code devrait vous montrer le salaire avec la chaîne formatée.

Faites-vous partie de ceux qui apprennent mieux en regardant la vidéo ? Ensuite, voici le didacticiel vidéo sur le curseur de référence fort avec le type de données d'enregistrement défini par l'utilisateur.

C'est tout pour ce tutoriel. Assurez-vous de partager ce blog sur vos réseaux sociaux et d'aider les autres à apprendre. Vous pouvez vous abonner à la chaîne YouTube pour des tutoriels plus intéressants. Merci et bonne journée !