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

Qu'est-ce que les enregistrements PLSQL dans Oracle

Enregistrements Oracle PLSQL

  • Les enregistrements PLSQL sont des types de données composites. Il s'agit d'un groupe d'éléments de données liés sous forme de champs, chacun avec son propre nom et type de données.
  • Les enregistrements PL/SQL ont une structure similaire à une ligne dans une table de base de données. Chaque type de données scalaire dans l'enregistrement contient une valeur.
  • Un enregistrement est constitué de composants de n'importe quel type d'enregistrement scalaire, PL/SQL ou de table PL/SQL.
  • Ils peuvent être manipulés comme une seule unité. Les enregistrements peuvent avoir autant de champs que nécessaire.

Comment déclarer les enregistrements Oracle PLSQL

( A)Enregistrement PLSQL défini par l'utilisateur

DECLARE TYPE employee_record_type IS RECORD 
 (emp_id NUMBER(10) NOT NULL,
 dept_no dept.deptno%TYPE,
 nаme varchar2(20),
 hire_dаte DATE := SYSDATE
 Last_name varchar2(20)
 );
 employee_record employee_record_type;

(1) Il n'y a pas de types de données prédéfinis pour Record comme il y en a pour le type de données scalaire. Vous devez donc d'abord créer, puis attribuer

(2) Chaque champ de l'enregistrement a un nom unique et un type de données spécifique

(3) %TYPE est utilisé pour déclarer une variable qui est du même type que la colonne d'une table spécifiée.

(4) nous utilisons le TYPE . . . L'instruction RECORD pour créer votre propre type d'enregistrement se produit lorsqu'un champ de votre enregistrement doit être un type spécifique à PL/SQL, tel que BOOLEAN. Si vous utilisez %ROWTYPE, les types de données de tous les champs seront contraints aux types SQL

(5) Les enregistrements sont eux-mêmes des types de données spécifiques à PL/SQL, donc une autre fonctionnalité intéressante des types d'enregistrements définis par l'utilisateur est que vous pouvez définir un type d'enregistrement en tant que champ dans un autre type d'enregistrement

DECLARE 
 TYPE emp_phone IS RECORD
 (
 Stdcode      PLS_INTEGER,
 phn_number   PLS_INTEGER,
 extension    PLS_INTEGER
 );
 TYPE contact_phone IS RECORD
 (
 day_phone#    emp_phone,
 eve_phone#    emp_phone,
 cell_phone#   emp_phone
 );
 sales_rep contact_phone;

B) Nous pouvons également définir le enregistrer en tant que type de ligne de tableau

DECLARE sales_data_rec apps.sales_data%ROWTYPE ;

1) Cela nous permet de déclarer un enregistrement basé sur la collection de la colonne dans la table ou la vue

2) Nous utilisons le préfixe %ROWTYPE avec la table de base de données pour le déclarer

3) Les champs de l'enregistrement tirent leur nom et leur type de données de la colonne de la table

C) Nous pouvons également utiliser %ROWTYPE pour déclarer un enregistrement qui a la même structure qu'une instruction SELECT dans un curseur.

Ceci est particulièrement utile pour récupérer soit un sous-ensemble de colonnes d'une table, soit des colonnes de plusieurs tables.

DECLARE 
 CURSOR emp_cur
 IS
 SELECT lastname, age,firstname FROM employees;
 l_employee   emp_cur%ROWTYPE;

Chaque fois que vous récupérez des données d'un curseur dans des variables PL/SQL, vous devez déclarer un enregistrement basé sur ce curseur avec %ROWTYPE et le récupérer dans cet enregistrement. De cette façon, quand et si la liste SELECT du curseur change, le nombre et le type de champs dans l'enregistrement changeront en conséquence et tout restera synchronisé.

Comment transmettre des valeurs aux enregistrements Oracle PLSQL

Syntaxe Utilisation
rec_name.col_name :=valeur ; Pour attribuer directement une valeur à une colonne spécifique d'un enregistrement.
rec_name.column_name :=valeur ; Pour attribuer directement une valeur à une colonne spécifique d'un enregistrement, si l'enregistrement est déclaré à l'aide de %ROWTYPE.
SELECT colonne1, colonne2 INTO rec_name.col_name1, rec_name.col_name2 FROM table_name [clause WHERE] ; Pour attribuer des valeurs à chaque champ d'un enregistrement à partir de la table de la base de données.
SELECT * INTO nom_enregistrement FROM nom_table [clause WHERE] ; Pour attribuer une valeur à tous les champs de l'enregistrement à partir d'une table de base de données.
nom_variable :=nom_enregistrement.nom_col ; Pour obtenir une valeur d'une colonne d'enregistrement et l'affecter à une variable.

Vous devez lire ces  autres messages PLSQL

Structure et types de blocs Oracle PLSQL
Questions d'entretien Oracle plsql
Tutoriels rapides Oracle sql et plsql