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

Comment créer une variable de type de données d'enregistrement définie par l'utilisateur dans la base de données Oracle

Jusqu'à présent, nous avons vu comment créer des variables de type de données d'enregistrement basées sur une table et sur un curseur. Celui qui reste est le type de données d'enregistrement défini par l'utilisateur que nous allons couvrir dans le didacticiel d'aujourd'hui.

Comme son nom l'indique, les enregistrements définis par l'utilisateur sont les variables d'enregistrement dont la structure est définie par l'utilisateur, contrairement aux enregistrements basés sur des tables ou des curseurs dont les structures sont dérivées de leurs tables ou curseurs respectifs. Cela signifie qu'avec les enregistrements définis par l'utilisateur, vous pouvez avoir un contrôle total sur la structure de votre variable d'enregistrement.

Le processus de création d'une variable d'enregistrement définie par l'utilisateur est divisé en deux parties. Avant de définir l'enregistrement, nous devons d'abord définir le TYPE de la variable d'enregistrement. Ce TYPE deviendra la base de la variable d'enregistrement défini par l'utilisateur et aidera à piloter sa structure. Une fois le TYPE déclaré avec succès, nous pouvons l'utiliser pour créer notre variable d'enregistrement définie par l'utilisateur.

Syntaxe des enregistrements définis par l'utilisateur dans la base de données Oracle

Vous trouverez ci-dessous la syntaxe de création du TYPE pour la variable de type de données d'enregistrement défini par l'utilisateur.

TYPE type_name IS RECORD (
field_name1 datatype 1,
field_name2 datatype 2,
...
field_nameN datatype N 
);

Une fois que nous avons déclaré notre TYPE, nous sommes tous prêts à créer notre variable d'enregistrement. Cette variable acquerra alors toutes les propriétés du type avec lequel elle est créée. Et voici la syntaxe pour créer la variable de type de données d'enregistrement définie par l'utilisateur.

record_name TYPE_NAME;

Avez-vous remarqué que, contrairement à la variable d'enregistrement basée sur une table ou sur un curseur, nous n'avons pas besoin d'utiliser l'attribut %ROWTYPE ici pour déclarer la variable d'enregistrement ?

Vous pouvez regarder le didacticiel vidéo sur ma chaîne YouTube pour une explication détaillée de la syntaxe ci-dessus.

Exemple :comment créer une variable de type de données d'enregistrement définie par l'utilisateur.

Étape 1 :Déclarer le type de la variable d'enregistrement définie par l'utilisateur

SET SERVEROUTPUT ON;
DECLARE
  TYPE rv_dept IS RECORD(
    f_name  VARCHAR2(20),
    d_name  DEPARTMENTS.department_name%TYPE 
  );

Étape 2 :Déclarer la variable d'enregistrement définie par l'utilisateur

Après avoir créé le TYPE, vous êtes prêt à créer votre variable d'enregistrement définie par l'utilisateur.

var1 rv_dept;

Cette instruction PL/SQL ci-dessus créera une variable d'enregistrement avec le nom VAR1.

Étape 3 :Initialisez la variable d'enregistrement définie par l'utilisateur.

La variable d'enregistrement définie par l'utilisateur peut être initialisée de plusieurs façons. Par exemple, vous pouvez initialiser la variable d'enregistrement directement en lui attribuant une valeur à l'aide de la variable d'affectation ou vous pouvez récupérer les valeurs stockées dans la colonne d'une table à l'aide de l'instruction SELECT-INTO. Continuons donc avec notre exemple et apprenons à initialiser une variable d'enregistrement définie par l'utilisateur à l'aide de l'instruction SELECT-INTO.

Ensuite, je vais écrire la section d'exécution. Dans la section d'exécution, nous aurons une instruction SELECT qui joindra la table des employés et la table des départements et renverra le prénom et le nom du département de l'employé spécifique.

BEGIN
  SELECT first_name , department_name 
  INTO var1.f_name, var1.d_name
  FROM employees  join departments
  Using (department_id) WHERE employee_id = 100; 
  DBMS_OUTPUT.PUT_LINE(var1.f_name||' '||var1.d_name);
END;

L'instruction select que nous avons ici renverra le prénom et le nom du service de l'employé dont l'ID d'employé est 100. Les données des deux colonnes proviennent de tables différentes, nous avons donc utilisé un JOIN ici. Comme il y a deux tables différentes impliquées dans la requête, dans une telle situation, l'utilisation de la variable d'enregistrement basée sur une table n'est pas possible. La solution viable est donc la variable d'enregistrement définie par l'utilisateur.

Joignons tous les morceaux de codes ci-dessus en un seul bloc PL/SQL anonyme.

SET SERVEROUTPUT ON;
DECLARE
  TYPE rv_dept IS RECORD(
    f_name  VARCHAR2(20),
    d_name  departments.department_name%type 
  );
  var1 rv_dept;
BEGIN
  SELECT first_name , department_name 
  INTO var1.f_name, var1.d_name
  FROM employees  join departments
  Using (department_id) WHERE employee_id = 100;
  
  DBMS_OUTPUT.PUT_LINE(var1.f_name||' '||var1.d_name);
END;
/

C'est ainsi que nous créons une variable de type de données d'enregistrement défini par l'utilisateur dans Oracle Database. J'espère que vous avez apprécié la lecture et appris quelque chose de nouveau. De plus, je donne la marchandise de RebellionRider à un gagnant sélectionné au hasard chaque mois, alors assurez-vous de partager ce blog avec vos amis sur votre réseau social.

C'est tout, merci et bonne journée !