Les VARRAY ont été lancés dans Oracle 8i en 1998 en tant que version modifiée de la collection de types de tables imbriquées dont nous avons discuté dans les blogs précédents.
Lecture suggérée :Comment créer un tableau imbriqué –
- En tant qu'élément de bloc PL/SQL
- En tant qu'objet de base de données
- Utilisation du type de données défini par l'utilisateur
Vous pouvez également maintenant tester vos connaissances sur le sujet en passant un test ici.
VARRAY est un sujet important car on voit qu'il y a généralement toujours une question à ce sujet dans l'examen de certification. Afin de minimiser toute confusion, nous allons d'abord jeter un bref coup d'œil à l'intro de la collection VARRAYs.
VARRAYs qui est un acronyme de Variable Sized Arrays ont été introduits dans Oracle 8i en 1998 en tant que format modifié de tables imbriquées. Les principales modifications peuvent être observées dans l'orientation du stockage. Il n'y a pas de changements notables dans l'implémentation mais leur orientation de stockage est complètement différente par rapport aux tables imbriquées.
Contrairement à la table imbriquée qui nécessite une table externe pour son stockage, les VARRAY sont stockés en ligne avec leur enregistrement parent en tant que valeur brute dans la table parent. Cela signifie qu'il n'est plus nécessaire d'utiliser la clause STORE AS. Oh, quel soulagement, pas d'E/S inutiles et en plus des performances accrues.
Pouvons-nous enregistrer et réutiliser les VARRAY ?
Semblables aux tables imbriquées, les VARRAY sont de type persistant de collection, ce qui signifie qu'elles peuvent être créées en tant qu'objets de base de données pouvant être enregistrés pour une utilisation ultérieure. Les VARRAY peuvent également être créés en tant que membres de blocs PL/SQL. La portée du VARRAY qui est déclaré à l'intérieur d'un bloc PL/SQL est limitée au bloc dans lequel il est créé.
Les VARRAY sont-ils bornés ou non bornés ?
Contrairement aux tables imbriquées, les VARRAY sont une forme de collection délimitée. Par délimité, je veux dire, vous devez décider du nombre d'éléments que vous souhaitez stocker dans votre collection tout en le déclarant. Alors que dans le tableau imbriqué qui est un type de collection illimité, il n'y a pas de limite supérieure sur le nombre d'éléments.
Mécanisme de stockage des VARRAY
Le mécanisme de stockage des VARRAY est la plus grande différence, ce qui en fait un choix supérieur aux tables imbriquées. Contrairement aux tables imbriquées qui nécessitent une table externe pour leur stockage, les VARRAY sont stockés en ligne avec leur enregistrement parent en tant que valeur brute dans la table parent. Cela signifie qu'il n'y a aucune exigence de clause STORE AS ou de table de stockage séparée.
Le stockage en ligne des VARRAY aide à réduire les entrées/sorties (E/S) du disque, ce qui rend les VARRAY plus performants que les tables imbriquées. Mais lorsque les VARRAY dépassent 4K de données, Oracle suit le mécanisme de stockage hors ligne et stocke les VARRAY en tant que LOB.
Syntaxe pour la création de VARRAY PL/SQL
Dans cette section, nous verrons la syntaxe pour créer des VARRAY comme
- Objet de base de données et
- Membre du bloc PL/SQL.
Vous pouvez vous diriger vers la vidéo sur le même sujet sur ma chaîne YouTube où j'ai expliqué ces deux syntaxes en détail.
VARRAY en tant qu'objet de base de données
CREATE [OR REPLACE] TYPE type_name IS {VARRAY | VARYING ARRAY} (size_limit) OF element_type;
VARRAY en tant que membre du bloc PL/SQL
DECLARE TYPE type_name IS {VARRAY | VARYING ARRAY} (size_limit) OF element_type;
Les deux syntaxes ci-dessus sont identiques à celles de la table imbriquée, sauf que nous avons ici une clause supplémentaire qui est Size_Limit. La limite de taille est un entier numérique qui indiquera le nombre maximum d'éléments que votre VARRAY peut contenir.
Rappelez-vous toujours que, comme pour les tables imbriquées, nous ne pouvons déclarer VARRAY que dans la section de déclaration du bloc PL/SQL.
Comment modifier la taille limite de la collection de types VARRAY ?
La limite de taille d'un VARRAY peut être modifiée à l'aide de l'instruction ALTER TYPE DDL.
ALTER TYPE type_name MODIFY LIMIT new-size-limit [INVALIDATE | CASCADE]
Où :
MODIFIER LE TYPE est une phrase réservée qui indique au compilateur quelle action DDL vous souhaitez effectuer.
TYPE NOM est le nom du type que vous souhaitez modifier.
MODIFIER LA LIMITE est une clause qui informe le compilateur que l'utilisateur souhaite modifier la limite de taille.
NOUVELLE-LIMITE DE TAILLE est un entier qui sera la nouvelle limite de taille de votre VARRAY.
INVALIDER clause est une clause facultative qui invalidera tous les objets dépendants sans aucun mécanisme de vérification.
Clause CASCADE est à nouveau une clause facultative qui propagera les modifications aux types et à la table dépendants.
Comment déposer une collection de type VARRAY ?
Pour supprimer un type VARRAY, vous pouvez vous aider de l'instruction DROP DDL.
DROP TYPE type_name [FORCE];
Où :
Type de dépôt
Est une instruction DDL à l'aide de laquelle vous pouvez supprimer n'importe quel type créé sur votre base de données.
Tapez le nom
Le nom du type est le nom d'un type déjà créé que vous souhaitez supprimer.
Forcer
Spécifiez FORCE pour supprimer le type même s'il a des objets de base de données dépendants. Oracle Database marque INUTILISÉ toutes les colonnes en fonction du type à supprimer, et ces colonnes deviennent inaccessibles. N'oubliez pas que cette opération n'est pas récupérable et peut rendre inaccessibles les données des tables ou colonnes dépendantes.
J'espère que vous avez appris quelque chose de nouveau. Vous pouvez maintenant tester vos connaissances sur le sujet en passant un test ici. Aidez-nous à grandir en partageant ce blog sur vos réseaux sociaux. De cette façon, vous pouvez également aider vos amis à apprendre. Merci et bonne journée !