Oracle Type d'enregistrements PL/SQL avec exemples
Qu’est-ce que le type d’enregistrement ?
Un type d'enregistrement est un type de données complexe qui permet au programmeur de créer un nouveau type de données avec la structure de colonnes souhaitée.
- Il regroupe une ou plusieurs colonnes pour former un nouveau type de données
- Ces colonnes auront leur propre nom et type de données
- Un type d'enregistrement peut accepter les données
- En tant qu'enregistrement unique composé de plusieurs colonnes OU
- Il peut accepter la valeur d'une colonne particulière d'un enregistrement
- Le type d'enregistrement signifie simplement un nouveau type de données. Une fois le type d'enregistrement créé, il sera stocké en tant que nouveau type de données dans la base de données et celui-ci sera utilisé pour déclarer une variable dans les programmes.
- Il utilisera le mot-clé 'TAPER' pour indiquer au compilateur qu'il crée le nouveau type de données.
- Il peut être créé à «niveau de la base de données » qui peut être stocké en tant qu'objets de base de données, utilisé dans toute la base de données ou créé au niveau du "niveaux de sous-programmes », qui n'est visible qu'à l'intérieur des sous-programmes.
- Le type d'enregistrement au niveau de la base de données peut également être déclaré pour les colonnes de la table afin qu'une seule colonne puisse contenir les données complexes.
- Les données de ces types de données sont accessibles en se référant à leur nom_variable suivi de l'opérateur point (.) suivi de nom_colonne, c'est-à-dire ' . '
Syntaxe de déclaration au niveau de la base de données :
CREATE TYPE <type_name_db> IS RECORD ( <column 1> <datatype>, );
Dans la première syntaxe, nous pouvons voir le mot-clé « CREATE TYPE » qui demande au compilateur de créer le type d'enregistrement nommé « type_name_db » avec la colonne spécifiée comme objet de base de données.
Ceci est donné sous forme d’instruction individuelle et non dans un bloc.
Syntaxe pour la déclaration au niveau du sous-programme :
DECLARE TYPE <type_name> IS RECORD ( <columnl> <datatype>, ); BEGIN <execution_section>; END;
Dans la syntaxe, nous créons le type d'enregistrement nommé « type_name » uniquement à l'intérieur du sous-programme.
Dans les deux méthodes de déclaration, la manière de définir la colonne et le type de données est similaire.
Exemple 1 : type RECORD en tant qu'objet de base de données
Dans ce programme, nous allons voir comment créer un « Type d'enregistrement » en tant qu'objet de base de données. Nous allons créer un enregistrement de type 'emp_det' avec quatre colonnes. Les colonnes et leur type de données sont les suivants :
- EMP_NO (NOMBRE)
- EMP_NAME (VARCHAR2 (150))
- DIRECTEUR (NUMÉRO)
- SALAIRE (NOMBRE)
CREATE TYPE emp_det IS OBJECT ( EMP_NO NUMBER, EMP_NAME VARCHAR2(150), MANAGER NUMBER, SALARY NUMBER ); /
Sortie :
Type created
Explication du code :
- Le code ci-dessus créera le type emp_det en tant qu'objet de base de données.
- Il comportera 4 colonnes emp_no, emp_name, manager et salaire tels que définis.
- Maintenant, 'emp_det' est similaire aux autres Type de données (comme NUMBER, VARCHAR@, etc.) Et il est visible dans toute la base de données. Cela peut donc être utilisé dans toute la base de données pour déclarer la variable de ce type.
Sortie :
Création du type 'emp_det' comme type d'enregistrement au niveau de la base de données.
Exemple 2 : Type d'enregistrement au niveau du sous-programme - Accès au niveau de la colonne
Dans cet exemple, nous allons voir comment créer un type d'enregistrement au niveau du sous-programme et comment le remplir et en récupérer les valeurs au niveau de la colonne.
Nous allons créer le type d'enregistrement 'emp_det' au niveau du sous-programme, et nous allons l'utiliser pour remplir et afficher les données de celui-ci.
DECLARE TYPE emp_det IS RECORD ( EMP_NO NUMBER, EMP_NAME VARCHAR2(150), MANAGER NUMBER, SALARY NUMBER ); guru99_emp_rec emp_det; BEGIN guru99_emp_rec.emp_no:= 1001; guru99_emp_rec.emp_name:=:'XXX'; guru99_emp_rec.manager:= 1000; guru99_emp_rec.salary:=10000; dbms_output.put.line('Employee Detail'); dbms_output.put_line ('Employee Number: '||guru99_emp_rec.emp_no); dbms_output.put_line ('Employee Name: '||guru99_emp_rec.emp_name); dbms_output.put_line ('Employee Salary: ' ||guru99_emp_rec.salary); dbms_output.put_line ('Employee Manager Number: '||guru99_emp_rec.manager); END; /
Sortie :
Employee Detail Employee Number: 1001 Employee Name: XXX Employee Salary: 10000 Employee Manager Number: 1000
Explication du code :
- Ligne de code 2-8: Le type d'enregistrement 'emp_det' est déclaré avec les colonnes emp_no, emp_name, salaire et manager de type de données NUMBER, VARCHAR2, NUMBER, NUMBER.
- Ligne de code 9 : La variable guru99_emp_rec est déclarée comme type de données 'emp_det'. Maintenant ça variable peut contenir la valeur qui contient les 4 champs/colonnes ci-dessus.
- Ligne de code 11 : Remplir le champ 'emp_no' de 'guru99_emp_rec' avec la valeur 1001.
- Ligne de code 12 : Remplir le champ 'emp_name' de 'guru99_emp_rec' avec la valeur XXX.
- Ligne de code 13 : Remplir le champ 'manager' de 'guru99_emp_rec' avec la valeur 1000.
- Ligne de code 14 : Remplir le champ « salaire » de « guru99_emp_rec » avec la valeur 10000 .
- Ligne de code 15 à 19 : Affichage de la valeur de 'guru99_emp_rec' en sortie.
Exemple 3 : Type d'enregistrement au niveau du sous-programme et accès au niveau de la ligne
Dans cet exemple, nous allons voir comment créer un type d'enregistrement au niveau du sous-programme et comment le renseigner au niveau de la ligne. Nous allons créer le type d'enregistrement 'emp_det' au niveau du sous-programme, et nous allons l'utiliser pour remplir et afficher les données de celui-ci.
DECLARE TYPE emp_det IS RECORD ( EMP_NO NUMBER, EMP_NAME YARCHAR2( 150), MANAGER NUMBER, SALARY NUMBER ); guru99_emp_rec emp_det; BEGIN INSERT INTO emp (emp_no, emp_name, salary, manager) VALUES (1002,'YYY',15000,1000); COMMIT; SELECT emp_no, emp_name, salary, manager INTO guru99_emp_rec FROM emp WHERE emp_no=1002; dbms_output.put_line (‘Employee Detail’); dbms_output.put_line (‘Employee Number: '||guru99_emp_rec.emp_no); dbms_output.put_line (‘Employee Name: '||guru99_emp_rec.emp_name); dbms_output.put_line (‘Employee Salary: '||guru99_emp_rec. salary); dbms_output.put_line (‘Employee Manager Number: '||guru99_emp_rec.manager); END; /
Explication du code :
- Ligne de code 2-8: Le type d'enregistrement 'emp_det' est déclaré avec les colonnes emp_no, emp_name, salaire et manager de type de données NUMBER, VARCHAR2, NUMBER, NUMBER.
- Ligne de code 9 : La variable guru99_emp_rec est déclarée comme type de données 'emp_det'. Désormais, cette variable peut contenir la valeur qui contient les 4 champs/colonnes ci-dessus.
- Ligne de code 11 : Remplir la table emp avec les données 1002 comme emp_no, YYY comme emp_name, 15000 comme salaire et 1000 comme numéro de manager.
- Ligne de code 12 : Validation de la transaction d'insertion ci-dessus.
- Ligne de code 13 : Remplir la variable « guru99_emp_rec » en tant que données au niveau de la ligne à partir de la requête de sélection pour le numéro d'employé 1002.
- Ligne de code 15 à 19 : Affichage de la valeur de 'guru99_emp_rec' en sortie.
Sortie :
Employee Detail Employee Number: 1002 Employee Name: YYY Employee Salary: 1000 Employee Manager Number: 15000
Remarque: Le type d'enregistrement n'est accessible qu'au niveau de la colonne tout en redirigeant sa valeur vers n'importe quel mode de sortie.