SlideShare une entreprise Scribd logo
1  sur  19
Copyright © Oracle Corporation, 2001. Tous droits réservés.
Utiliser des types de données
composites
Copyright © Oracle Corporation, 2001. Tous droits réservés.
5-2
Objectifs
A la fin de ce chapitre, vous pourrez :
• créer des enregistrements PL/SQL définis par
l'utilisateur
• créer des enregistrements avec l'attribut
%ROWTYPE
• créer une table INDEX BY
• créer une table d'enregistrements INDEX BY
• faire la distinction entre les enregistrements, les
tables, et les tables d'enregistrement
Copyright © Oracle Corporation, 2001. Tous droits réservés.
5-3
Types de données composites
• Il existe deux catégories de données composites :
– enregistrements PL/SQL
– ensembles PL/SQL
– table INDEX BY
– table imbriquée
– VARRAY
• Les types de données composites contiennent des
composantes internes
• Les types de données composites sont réutilisables
Copyright © Oracle Corporation, 2001. Tous droits réservés.
5-4
Enregistrements PL/SQL
• Ils doivent être composés d'un ou plusieurs champs
de type scalaire, RECORD ou INDEX BY
• Leur structure est similaire à celle des
enregistrements en langage de troisième génération
(3GL)
• Ils sont différents des lignes d'une table de base de
données
• Ils traitent un ensemble de champs comme une unité
logique
• Ils permettent d'extraire une ligne de données à partir
d'une table pour la traiter
Copyright © Oracle Corporation, 2001. Tous droits réservés.
5-5
Créer un enregistrement PL/SQL
Syntaxe :
Où field_declaration est :
TYPE type_name IS RECORD
(field_declaration[, field_declaration]…);
identifier type_name;
field_name {field_type | variable%TYPE
| table.column%TYPE | table%ROWTYPE}
[[NOT NULL] {:= | DEFAULT} expr]
Copyright © Oracle Corporation, 2001. Tous droits réservés.
5-6
Créer un enregistrement PL/SQL
Déclarer des variables pour le stockage du nom, du
poste et du salaire d'un nouvel employé.
Exemple :
...
TYPE emp_record_type IS RECORD
(last_name VARCHAR2(25),
job_id VARCHAR2(10),
salary NUMBER(8,2));
emp_record emp_record_type;
...
Copyright © Oracle Corporation, 2001. Tous droits réservés.
5-7
Structure d'un enregistrement PL/SQL
Champ1 Champ2 Champ3
(type de données) (type de données) (type de
données)
100 King AD_PRES
Champ1 Champ2 Champ3
(type de données) (type de données) (type de données)
Example:
employee_id number(6) last_name varchar2(25) job_id varchar2(10)
Copyright © Oracle Corporation, 2001. Tous droits réservés.
5-8
Attribut %ROWTYPE
• Permet de déclarer une variable à partir d'un
ensemble de colonnes d'une table ou d'une vue de
base de données
• Doit être précédé du nom de la table de base de
données
• Les champs de l'enregistrement tirent leurs noms
et leurs types de données des colonnes de la table
ou de la vue
Copyright © Oracle Corporation, 2001. Tous droits réservés.
5-10
Avantages liés à l'utilisation de l'attribut
%ROWTYPE
• Il n'est pas nécessaire de connaître le nombre et
les types de données des colonnes de la table de
base de données sous-jacente
• Le nombre et les types des colonnes de la table de
base de données sous-jacente peuvent être
modifiés à l'exécution
• L'attribut permet d'extraire une ligne avec
l'instruction SELECT *
Copyright © Oracle Corporation, 2001. Tous droits réservés.
5-11
Attribut %ROWTYPE
Exemples :
Déclarer une variable pour le stockage des informations
relatives à un service de la table DEPARTMENTS
Déclarer une variable pour le stockage des informations
relatives à un employé de la table EMPLOYEES
dept_record departments%ROWTYPE;
emp_record employees%ROWTYPE;
Copyright © Oracle Corporation, 2001. Tous droits réservés.
5-13
Tables INDEX BY
• Ces tables comportent 2 composants :
– une clé primaire de type BINARY_INTEGER
– une colonne de type scalaire ou RECORD
• Leur taille peut augmenter de façon dynamique,
car elles ne présentent pas de contrainte
Copyright © Oracle Corporation, 2001. Tous droits réservés.
5-14
Créer une table INDEX BY
Syntaxe :
TYPE type_name IS TABLE OF
{column_type | variable%TYPE
| table.column%TYPE} [NOT NULL]
| table.%ROWTYPE
[INDEX BY BINARY_INTEGER];
identifier type_name;
...
TYPE ename_table_type IS TABLE OF
employees.last_name%TYPE
INDEX BY BINARY_INTEGER;
ename_table ename_table_type;
...
Exemple :
Déclarer une variable INDEX BY pour le stockage des noms
Copyright © Oracle Corporation, 2001. Tous droits réservés.
5-15
Structure des tables INDEX BY
Identificateur unique Colonne
... ...
1 Jones
2 Smith
3 Maduro
... ...
BINARY_INTEGER Scalaire
Copyright © Oracle Corporation, 2001. Tous droits réservés.
5-16
Créer une table INDEX BY
DECLARE
TYPE ename_table_type IS TABLE OF
employees.last_name%TYPE
INDEX BY BINARY_INTEGER;
TYPE hiredate_table_type IS TABLE OF DATE
INDEX BY BINARY_INTEGER;
ename_table ename_table_type;
hiredate_table hiredate_table_type;
BEGIN
ename_table(1) := 'CAMERON';
hiredate_table(8) := SYSDATE + 7;
IF ename_table.EXISTS(1) THEN
INSERT INTO ...
...
END;
/
Copyright © Oracle Corporation, 2001. Tous droits réservés.
5-17
Utiliser les méthodes des tables INDEX BY
Les méthodes suivantes facilitent l'utilisation
des tables INDEX BY :
– NEXT
– TRIM
– DELETE
– EXISTS
– COUNT
– FIRST and LAST
– PRIOR
Copyright © Oracle Corporation, 2001. Tous droits réservés.
5-18
Table d'enregistrements INDEX BY
• Définir une variable TABLE avec un type de données
PL/SQL admis
• Déclarer une variable PL/SQL pour le stockage des
informations d'un service.
Exemple :
DECLARE
TYPE dept_table_type IS TABLE OF
departments%ROWTYPE
INDEX BY BINARY_INTEGER;
dept_table dept_table_type;
-- Each element of dept_table is a record
Copyright © Oracle Corporation, 2001. Tous droits réservés.
5-19
Exemple de table d'enregistrements INDEX BY
SET SERVEROUTPUT ON
DECLARE
TYPE emp_table_type is table of
employees%ROWTYPE INDEX BY BINARY_INTEGER;
my_emp_table emp_table_type;
v_count NUMBER(3):= 104;
BEGIN
FOR i IN 100..v_count
LOOP
SELECT * INTO my_emp_table(i) FROM employees
WHERE employee_id = i;
END LOOP;
FOR i IN my_emp_table.FIRST..my_emp_table.LAST
LOOP
DBMS_OUTPUT.PUT_LINE(my_emp_table(i).last_name);
END LOOP;
END;
Copyright © Oracle Corporation, 2001. Tous droits réservés.
5-20
Synthèse
Ce chapitre vous a permis d'apprendre à :
• définir et référencer des variables PL/SQL
possédant des types de données composites :
– enregistrements PL/SQL
– tables INDEX BY
– tables d'enregistrements INDEX BY
• définir un enregistrement PL/SQL en utilisant
l'attribut %ROWTYPE
Copyright © Oracle Corporation, 2001. Tous droits réservés.
5-21
Présentation de l'exercice 5
Dans cet exercice, vous allez :
• déclarer des tables INDEX BY
• traiter des données en utilisant les tables INDEX BY
• déclarer un enregistrement PL/SQL
• traiter des données à l'aide d'un enregistrement
PL/SQL

Contenu connexe

Similaire à Les05.ppt

1. Gestion des Utilisateurs ORACLE12c.ppt
1. Gestion des Utilisateurs ORACLE12c.ppt1. Gestion des Utilisateurs ORACLE12c.ppt
1. Gestion des Utilisateurs ORACLE12c.pptAhmathBambaMBACKE
 
1-pl-sql 2021 2022.pdf
1-pl-sql 2021 2022.pdf1-pl-sql 2021 2022.pdf
1-pl-sql 2021 2022.pdfImaneZoubir1
 
Tpdba1
Tpdba1Tpdba1
Tpdba1infcom
 
Principes Relationnels et Concepts Oracle
Principes Relationnelset Concepts OraclePrincipes Relationnelset Concepts Oracle
Principes Relationnels et Concepts Oraclewebreaker
 
L'Ordre SELECT Élémentaire | SQL Oracle
L'Ordre SELECT Élémentaire | SQL OracleL'Ordre SELECT Élémentaire | SQL Oracle
L'Ordre SELECT Élémentaire | SQL Oraclewebreaker
 
c11-gerer-les-donnees-resume-theorique-partie1-6311eb2f1d745.pdf
c11-gerer-les-donnees-resume-theorique-partie1-6311eb2f1d745.pdfc11-gerer-les-donnees-resume-theorique-partie1-6311eb2f1d745.pdf
c11-gerer-les-donnees-resume-theorique-partie1-6311eb2f1d745.pdftepoha4848
 
Projet Bases de données avancées Multimédia.
Projet Bases de données  avancées Multimédia.Projet Bases de données  avancées Multimédia.
Projet Bases de données avancées Multimédia.emnahkiri1
 
1425583156389.pptx
1425583156389.pptx1425583156389.pptx
1425583156389.pptxtirike6016
 
Formation access
Formation accessFormation access
Formation accessbouyahia76
 
Chapitre 04-B - Langages de consultation.pdf
Chapitre 04-B - Langages de consultation.pdfChapitre 04-B - Langages de consultation.pdf
Chapitre 04-B - Langages de consultation.pdfRihabBENLAMINE
 

Similaire à Les05.ppt (20)

1. Gestion des Utilisateurs ORACLE12c.ppt
1. Gestion des Utilisateurs ORACLE12c.ppt1. Gestion des Utilisateurs ORACLE12c.ppt
1. Gestion des Utilisateurs ORACLE12c.ppt
 
1-pl-sql 2021 2022.pdf
1-pl-sql 2021 2022.pdf1-pl-sql 2021 2022.pdf
1-pl-sql 2021 2022.pdf
 
Tpdba1
Tpdba1Tpdba1
Tpdba1
 
Principes Relationnels et Concepts Oracle
Principes Relationnelset Concepts OraclePrincipes Relationnelset Concepts Oracle
Principes Relationnels et Concepts Oracle
 
L'Ordre SELECT Élémentaire | SQL Oracle
L'Ordre SELECT Élémentaire | SQL OracleL'Ordre SELECT Élémentaire | SQL Oracle
L'Ordre SELECT Élémentaire | SQL Oracle
 
Cours3 gdm sql
Cours3 gdm sqlCours3 gdm sql
Cours3 gdm sql
 
Les02.ppt
Les02.pptLes02.ppt
Les02.ppt
 
Sql
SqlSql
Sql
 
c11-gerer-les-donnees-resume-theorique-partie1-6311eb2f1d745.pdf
c11-gerer-les-donnees-resume-theorique-partie1-6311eb2f1d745.pdfc11-gerer-les-donnees-resume-theorique-partie1-6311eb2f1d745.pdf
c11-gerer-les-donnees-resume-theorique-partie1-6311eb2f1d745.pdf
 
12 fr
12 fr12 fr
12 fr
 
Projet Bases de données avancées Multimédia.
Projet Bases de données  avancées Multimédia.Projet Bases de données  avancées Multimédia.
Projet Bases de données avancées Multimédia.
 
4-TP BD.pptx
4-TP BD.pptx4-TP BD.pptx
4-TP BD.pptx
 
1425583156389.pptx
1425583156389.pptx1425583156389.pptx
1425583156389.pptx
 
Cours sql-sh-
Cours sql-sh-Cours sql-sh-
Cours sql-sh-
 
Formation access
Formation accessFormation access
Formation access
 
SQL.pdf
SQL.pdfSQL.pdf
SQL.pdf
 
Hive ppt (1)
Hive ppt (1)Hive ppt (1)
Hive ppt (1)
 
Plsql
PlsqlPlsql
Plsql
 
Chapitre 04-B - Langages de consultation.pdf
Chapitre 04-B - Langages de consultation.pdfChapitre 04-B - Langages de consultation.pdf
Chapitre 04-B - Langages de consultation.pdf
 
Chapitre5.pdf
Chapitre5.pdfChapitre5.pdf
Chapitre5.pdf
 

Dernier

Algo II : les piles ( cours + exercices)
Algo II :  les piles ( cours + exercices)Algo II :  les piles ( cours + exercices)
Algo II : les piles ( cours + exercices)Sana REFAI
 
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...Institut de l'Elevage - Idele
 
conception d'un batiment r+4 comparative de defferente ariante de plancher
conception d'un  batiment  r+4 comparative de defferente ariante de plancherconception d'un  batiment  r+4 comparative de defferente ariante de plancher
conception d'un batiment r+4 comparative de defferente ariante de planchermansouriahlam
 
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...GAL2024 - Méthane 2030 : une démarche collective française à destination de t...
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...Institut de l'Elevage - Idele
 
Câblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfCâblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfmia884611
 
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...Institut de l'Elevage - Idele
 
GAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesGAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesInstitut de l'Elevage - Idele
 
GAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engageGAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engageInstitut de l'Elevage - Idele
 
comprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestioncomprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestionyakinekaidouchi1
 
JTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfJTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfInstitut de l'Elevage - Idele
 
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...Institut de l'Elevage - Idele
 
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenusGAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenusInstitut de l'Elevage - Idele
 
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...Institut de l'Elevage - Idele
 
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfJTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfInstitut de l'Elevage - Idele
 
GAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversitéGAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversitéInstitut de l'Elevage - Idele
 
WBS OBS RACI_2020-etunhjjlllllll pdf.pdf
WBS OBS RACI_2020-etunhjjlllllll pdf.pdfWBS OBS RACI_2020-etunhjjlllllll pdf.pdf
WBS OBS RACI_2020-etunhjjlllllll pdf.pdfSophie569778
 
JTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfJTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfInstitut de l'Elevage - Idele
 

Dernier (20)

Algo II : les piles ( cours + exercices)
Algo II :  les piles ( cours + exercices)Algo II :  les piles ( cours + exercices)
Algo II : les piles ( cours + exercices)
 
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
 
JTC 2024 Bâtiment et Photovoltaïque.pdf
JTC 2024  Bâtiment et Photovoltaïque.pdfJTC 2024  Bâtiment et Photovoltaïque.pdf
JTC 2024 Bâtiment et Photovoltaïque.pdf
 
conception d'un batiment r+4 comparative de defferente ariante de plancher
conception d'un  batiment  r+4 comparative de defferente ariante de plancherconception d'un  batiment  r+4 comparative de defferente ariante de plancher
conception d'un batiment r+4 comparative de defferente ariante de plancher
 
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...GAL2024 - Méthane 2030 : une démarche collective française à destination de t...
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...
 
Câblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfCâblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdf
 
JTC 2024 - DeCremoux_Anomalies_génétiques.pdf
JTC 2024 - DeCremoux_Anomalies_génétiques.pdfJTC 2024 - DeCremoux_Anomalies_génétiques.pdf
JTC 2024 - DeCremoux_Anomalies_génétiques.pdf
 
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
 
GAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesGAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentes
 
GAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engageGAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engage
 
comprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestioncomprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestion
 
CAP2ER_GC_Presentation_Outil_20240422.pptx
CAP2ER_GC_Presentation_Outil_20240422.pptxCAP2ER_GC_Presentation_Outil_20240422.pptx
CAP2ER_GC_Presentation_Outil_20240422.pptx
 
JTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfJTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdf
 
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
 
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenusGAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
 
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
 
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfJTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
 
GAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversitéGAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversité
 
WBS OBS RACI_2020-etunhjjlllllll pdf.pdf
WBS OBS RACI_2020-etunhjjlllllll pdf.pdfWBS OBS RACI_2020-etunhjjlllllll pdf.pdf
WBS OBS RACI_2020-etunhjjlllllll pdf.pdf
 
JTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfJTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdf
 

Les05.ppt

  • 1. Copyright © Oracle Corporation, 2001. Tous droits réservés. Utiliser des types de données composites
  • 2. Copyright © Oracle Corporation, 2001. Tous droits réservés. 5-2 Objectifs A la fin de ce chapitre, vous pourrez : • créer des enregistrements PL/SQL définis par l'utilisateur • créer des enregistrements avec l'attribut %ROWTYPE • créer une table INDEX BY • créer une table d'enregistrements INDEX BY • faire la distinction entre les enregistrements, les tables, et les tables d'enregistrement
  • 3. Copyright © Oracle Corporation, 2001. Tous droits réservés. 5-3 Types de données composites • Il existe deux catégories de données composites : – enregistrements PL/SQL – ensembles PL/SQL – table INDEX BY – table imbriquée – VARRAY • Les types de données composites contiennent des composantes internes • Les types de données composites sont réutilisables
  • 4. Copyright © Oracle Corporation, 2001. Tous droits réservés. 5-4 Enregistrements PL/SQL • Ils doivent être composés d'un ou plusieurs champs de type scalaire, RECORD ou INDEX BY • Leur structure est similaire à celle des enregistrements en langage de troisième génération (3GL) • Ils sont différents des lignes d'une table de base de données • Ils traitent un ensemble de champs comme une unité logique • Ils permettent d'extraire une ligne de données à partir d'une table pour la traiter
  • 5. Copyright © Oracle Corporation, 2001. Tous droits réservés. 5-5 Créer un enregistrement PL/SQL Syntaxe : Où field_declaration est : TYPE type_name IS RECORD (field_declaration[, field_declaration]…); identifier type_name; field_name {field_type | variable%TYPE | table.column%TYPE | table%ROWTYPE} [[NOT NULL] {:= | DEFAULT} expr]
  • 6. Copyright © Oracle Corporation, 2001. Tous droits réservés. 5-6 Créer un enregistrement PL/SQL Déclarer des variables pour le stockage du nom, du poste et du salaire d'un nouvel employé. Exemple : ... TYPE emp_record_type IS RECORD (last_name VARCHAR2(25), job_id VARCHAR2(10), salary NUMBER(8,2)); emp_record emp_record_type; ...
  • 7. Copyright © Oracle Corporation, 2001. Tous droits réservés. 5-7 Structure d'un enregistrement PL/SQL Champ1 Champ2 Champ3 (type de données) (type de données) (type de données) 100 King AD_PRES Champ1 Champ2 Champ3 (type de données) (type de données) (type de données) Example: employee_id number(6) last_name varchar2(25) job_id varchar2(10)
  • 8. Copyright © Oracle Corporation, 2001. Tous droits réservés. 5-8 Attribut %ROWTYPE • Permet de déclarer une variable à partir d'un ensemble de colonnes d'une table ou d'une vue de base de données • Doit être précédé du nom de la table de base de données • Les champs de l'enregistrement tirent leurs noms et leurs types de données des colonnes de la table ou de la vue
  • 9. Copyright © Oracle Corporation, 2001. Tous droits réservés. 5-10 Avantages liés à l'utilisation de l'attribut %ROWTYPE • Il n'est pas nécessaire de connaître le nombre et les types de données des colonnes de la table de base de données sous-jacente • Le nombre et les types des colonnes de la table de base de données sous-jacente peuvent être modifiés à l'exécution • L'attribut permet d'extraire une ligne avec l'instruction SELECT *
  • 10. Copyright © Oracle Corporation, 2001. Tous droits réservés. 5-11 Attribut %ROWTYPE Exemples : Déclarer une variable pour le stockage des informations relatives à un service de la table DEPARTMENTS Déclarer une variable pour le stockage des informations relatives à un employé de la table EMPLOYEES dept_record departments%ROWTYPE; emp_record employees%ROWTYPE;
  • 11. Copyright © Oracle Corporation, 2001. Tous droits réservés. 5-13 Tables INDEX BY • Ces tables comportent 2 composants : – une clé primaire de type BINARY_INTEGER – une colonne de type scalaire ou RECORD • Leur taille peut augmenter de façon dynamique, car elles ne présentent pas de contrainte
  • 12. Copyright © Oracle Corporation, 2001. Tous droits réservés. 5-14 Créer une table INDEX BY Syntaxe : TYPE type_name IS TABLE OF {column_type | variable%TYPE | table.column%TYPE} [NOT NULL] | table.%ROWTYPE [INDEX BY BINARY_INTEGER]; identifier type_name; ... TYPE ename_table_type IS TABLE OF employees.last_name%TYPE INDEX BY BINARY_INTEGER; ename_table ename_table_type; ... Exemple : Déclarer une variable INDEX BY pour le stockage des noms
  • 13. Copyright © Oracle Corporation, 2001. Tous droits réservés. 5-15 Structure des tables INDEX BY Identificateur unique Colonne ... ... 1 Jones 2 Smith 3 Maduro ... ... BINARY_INTEGER Scalaire
  • 14. Copyright © Oracle Corporation, 2001. Tous droits réservés. 5-16 Créer une table INDEX BY DECLARE TYPE ename_table_type IS TABLE OF employees.last_name%TYPE INDEX BY BINARY_INTEGER; TYPE hiredate_table_type IS TABLE OF DATE INDEX BY BINARY_INTEGER; ename_table ename_table_type; hiredate_table hiredate_table_type; BEGIN ename_table(1) := 'CAMERON'; hiredate_table(8) := SYSDATE + 7; IF ename_table.EXISTS(1) THEN INSERT INTO ... ... END; /
  • 15. Copyright © Oracle Corporation, 2001. Tous droits réservés. 5-17 Utiliser les méthodes des tables INDEX BY Les méthodes suivantes facilitent l'utilisation des tables INDEX BY : – NEXT – TRIM – DELETE – EXISTS – COUNT – FIRST and LAST – PRIOR
  • 16. Copyright © Oracle Corporation, 2001. Tous droits réservés. 5-18 Table d'enregistrements INDEX BY • Définir une variable TABLE avec un type de données PL/SQL admis • Déclarer une variable PL/SQL pour le stockage des informations d'un service. Exemple : DECLARE TYPE dept_table_type IS TABLE OF departments%ROWTYPE INDEX BY BINARY_INTEGER; dept_table dept_table_type; -- Each element of dept_table is a record
  • 17. Copyright © Oracle Corporation, 2001. Tous droits réservés. 5-19 Exemple de table d'enregistrements INDEX BY SET SERVEROUTPUT ON DECLARE TYPE emp_table_type is table of employees%ROWTYPE INDEX BY BINARY_INTEGER; my_emp_table emp_table_type; v_count NUMBER(3):= 104; BEGIN FOR i IN 100..v_count LOOP SELECT * INTO my_emp_table(i) FROM employees WHERE employee_id = i; END LOOP; FOR i IN my_emp_table.FIRST..my_emp_table.LAST LOOP DBMS_OUTPUT.PUT_LINE(my_emp_table(i).last_name); END LOOP; END;
  • 18. Copyright © Oracle Corporation, 2001. Tous droits réservés. 5-20 Synthèse Ce chapitre vous a permis d'apprendre à : • définir et référencer des variables PL/SQL possédant des types de données composites : – enregistrements PL/SQL – tables INDEX BY – tables d'enregistrements INDEX BY • définir un enregistrement PL/SQL en utilisant l'attribut %ROWTYPE
  • 19. Copyright © Oracle Corporation, 2001. Tous droits réservés. 5-21 Présentation de l'exercice 5 Dans cet exercice, vous allez : • déclarer des tables INDEX BY • traiter des données en utilisant les tables INDEX BY • déclarer un enregistrement PL/SQL • traiter des données à l'aide d'un enregistrement PL/SQL