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 :

Oracle Type d'enregistrement PL/SQL

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 :

Oracle Type d'enregistrement PL/SQL

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

Code Explication:

  • 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.

Oracle Type d'enregistrement PL/SQL

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

Code Explication:

  • Code ligne 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.
  • Code ligne 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.
  • Code ligne 11: Remplir le champ 'emp_no' de 'guru99_emp_rec' avec la valeur 1001.
  • Code ligne 12: Remplir le champ 'emp_name' de 'guru99_emp_rec' avec la valeur XXX.
  • Code ligne 13: Remplir le champ 'manager' de 'guru99_emp_rec' avec la valeur 1000.
  • Code ligne 14: Remplir le champ ยซ salaire ยป de ยซ guru99_emp_rec ยป avec la valeur 10000 .
  • Code lignes 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.

Oracle Type d'enregistrement PL/SQL

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;
/

Code Explication:

  • Code ligne 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.
  • Code ligne 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.
  • Code ligne 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.
  • Code ligne 12: Validation de la transaction d'insertion ci-dessus.
  • Code ligne 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.
  • Code lignes 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

ร€ noter: 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.

Rรฉsumez cet article avec :