Le but de l'utilisation de différents types de PL/SQL collections Oracle
Quel est le but principal de l'utilisation de collections oracle ?
- Index par les tables
- Tables imbriquées
- De taille Variable TABLEAU
Pouvez-vous nous expliquer la différence entre les types de collections ?
Lire l'Oracle de docs ici: docs.oracle.com/cd/B28359_01/appdev.111/b28370/...
Vous pourriez marquer une réponse comme acceptée plz ?
Vous pourriez marquer une réponse comme acceptée plz ?
OriginalL'auteur Madhav | 2013-02-18
Vous devez vous connecter pour publier un commentaire.
Commençons avec des Tableaux Imbriqués, ils sont la forme la plus commune de la collecte, et donc représenter une bonne base de comparaison.
Une table imbriquée est une variable qui peut contenir plus d'un exemple de quelque chose, souvent un enregistrement d'une table de base de données. Ils pourraient être déclaré comme ceci:
Ils sont utiles à chaque fois que nous voulons pour stocker plusieurs instances des données à l'encontre de qui nous voulons faire la même chose. L'exemple classique est l'utilisation en bloc COLLECTER pour stocker des enregistrements multiples:
Cela nous donne une source de données, nous pouvons boucle ronde; fondamentalement, nous pouvons naviguer vers l'arrière ainsi que les attaquants, même sauter à la fin ou au début, qui sont des choses que nous ne pouvons pas faire avec un curseur. Des tables imbriquées peuvent être des collections de tout type de données, y compris les composites tels que PL/SQL dossiers ou types définis par l'utilisateur.
Un Index Par table est mieux disant (comme les docs ne) d'un Tableau Associatif . Ce sont de simples collections de un des attributs avec un index. Les tables imbriquées ont également les index, mais leurs indices sont juste des nombres de lignes. Avec un tableau associatif de l'index peut être significatif, c'est à dire provenant d'une valeur de données. Ils sont donc utiles pour la mise en cache les valeurs des données pour les utiliser plus tard. L'index peut être un nombre, ou (depuis 9iR2) une chaîne de caractères qui peut être très utile. Pour exemple, voici un tableau associatif des salaires qui est indexé par le salarié à l'identificateur.
Remarque que je pourrais avoir déclaré que le tableau à l'aide de l'INDICE PAR BINARY_INTEGER mais il est plus clair d'utiliser le %TYPE de syntaxe (l'auto-documentation du code). Les éléments de cette matrice, identifié par une valeur de l'indice, dans ce cas EMPNO:
Autre que la mise en cache des tables de référence ou similaire des valeurs il n'y a pas beaucoup de cas d'utilisation pour les tableaux associatifs.
Variable tableaux sont juste des tables imbriquées avec une pré-défini de limite sur le nombre d'éléments. Alors peut-être que le nom est trompeur: ils sont corrigés des tableaux. Il y a peu que nous pouvons faire avec VArrays que nous ne pouvons pas faire avec des tableaux imbriqués (à l'exception de limiter le nombre d'éléments et c'est assez rare que nous pour le faire). Ils sont déclarées comme ceci:
Nous pouvons utiliser en vrac collecter pour remplir un VArray ...
Cependant, nous devons être certains que la requête doit retourner au plus le nombre d'éléments spécifiés dans le VArray de la déclaration. Sinon le SÉLECTIONNEZ lancer ORA-22165.
On ne connaît pas de cas d'utilisation pour les variables tableaux. Ok c'est un peu dur, mais la quasi-totalité du temps, vous utiliserez des tables imbriquées à la place. Le gros avantage de VArrays sur les tables imbriquées est qu'ils garantissent l'ordre des éléments. Donc, si vous devez obtenir les éléments dans le même ordre que vous avez inséré entre eux utilisent un VArray.
Le PL/SQL documentation consacre un chapitre entier aux collections. En savoir plus.
mytab(3)
n'est pas un coup de lieux d'échange avecmytab(2)
. Peut-être aussi utile de mentionner que vous ne pouvez pas utiliser le multiset opérateurs ou conditions avec varrays.selon [la documentation] "Les indices de ligne et de commande d'une table imbriquée peut pas rester stable vous de stocker et de récupérer la table imbriquée dans la base de données"
Ah, donc c'est ce que peu de moyens. Pas tant de souci pour le PL/SQL programmeur à l'aide de la collection de variables, bien que, qui, je pense, est le contexte de cette question.
OriginalL'auteur APC
PL/SQL offre ces types de collection:-
Tableaux associatifs, aussi connu comme index-par des tables, vous permettent de rechercher des éléments à l'aide des nombres arbitraires et des chaînes pour l'indice des valeurs. Ils sont similaires aux tables de hachage dans d'autres langages de programmation.
Tables imbriquées détenir un nombre arbitraire d'éléments. Ils utilisent des numéros séquentiels comme des indices. Vous pouvez définir l'équivalent de types SQL, permettant de tables imbriquées pour être stockées dans des tables de base de données et manipulées à l'aide de SQL.
Varrays (court pour un tableau de taille variable) détenir un nombre fixe d'éléments (même si vous pouvez modifier le nombre d'éléments à l'exécution). Ils utilisent des numéros séquentiels comme des indices. Vous pouvez définir l'équivalent de types SQL, permettant varrays à être stockées dans des tables de base de données. Ils peuvent être stockées et récupérées par le biais de SQL, mais avec moins de souplesse que les tables imbriquées.
1. Le choix Entre des Tables Imbriquées et des Tableaux Associatifs:-
Les deux tables imbriquées et des tableaux associatifs (anciennement connu sous le index-par tables) utilisez la même indice de notation, mais ils ont des caractéristiques différentes quand il s'agit de la persistance et de la facilité de passage de paramètres.
Tables imbriquées peuvent être stockées dans une base de données de la colonne, mais des tableaux associatifs ne peut pas. Des tables imbriquées peut simplifier les opérations SQL où vous auriez normalement se joindre à une seule colonne de la table avec une table plus grande.
Les tableaux associatifs sont appropriés pour des relativement petites tables de consultation où la collection se construit dans la mémoire à chaque fois qu'une procédure est appelée ou un paquet est initialisé. Ils sont bons pour la collecte des informations dont le volume est inconnu à l'avance, car il n'y a pas de limite fixée à leur taille. Leurs valeurs de l'indice sont plus souples, parce que tableau associatif des indices peut être négative, peut être non séquentiels, et peut utiliser les valeurs de chaîne au lieu de chiffres.
PL/SQL convertit automatiquement entre les tableaux et les tableaux associatifs que l'utilisation numérique des valeurs de clé. Le moyen le plus efficace pour transmettre des collections vers et depuis le serveur de base de données est de mettre en place des valeurs de données dans des tableaux associatifs, puis utilisez les tableaux associatifs avec le volume des constructions (FORALL déclaration ou en VRAC RECUEILLIR clause).
2. Le choix Entre des Tables Imbriquées et Varrays:-
Varrays sont un bon choix lorsque:
Le nombre d'éléments est connu à l'avance.
Les éléments sont généralement accessibles dans la séquence.
Lorsqu'il est stocké dans la base de données, varrays garder leur commande et inférieurs.
Chaque varray est stocké comme un objet unique, soit à l'intérieur du tableau dont il est une colonne (si le varray est à moins de 4 KO) ou à l'extérieur de la table, mais toujours dans le même espace de table (si le varray est supérieure à 4 KO). Vous devez mettre à jour ou de récupérer tous les éléments de la varray en même temps, ce qui est le plus approprié lors de l'exécution d'une opération sur tous les éléments à la fois. Mais vous pourriez trouver qu'il est impossible de stocker et de récupérer un grand nombre d'éléments de cette façon.
Des tableaux imbriqués sont un bon choix lorsque:
Les valeurs de l'indice ne sont pas consécutifs.
Il n'y a pas de nombre fixe de valeurs de l'indice. Cependant, une limite maximale n'est imposée.
Vous avez besoin de supprimer ou de mettre à jour certains éléments, mais pas tous les éléments à la fois.
Vous aurait généralement de créer une table de choix, avec de multiples entrées pour chaque ligne de la table principale, et d'y accéder par le biais de requêtes de jointure.
Tables imbriquées peuvent être dispersés: vous pouvez supprimer l'arbitraire des éléments, plutôt que de simplement supprimer un élément de la fin.
Table imbriquée de données est stocké dans un autre magasin de la table, un générés par le système de base de données de la table associée à la table imbriquée. La base de données joint les tables pour vous lorsque vous accédez à la table imbriquée. Cela rend les tables imbriquées adapté pour les requêtes et les mises à jour ne concernent que quelques éléments de la collection.
Vous ne pouvez pas compter sur le bon de commande et les indices d'une table imbriquée restant stable que la table imbriquée sont stockées et récupérées à partir de la base de données, parce que l'ordre et les indices ne sont pas conservées dans la base de données.
OriginalL'auteur shivaranjani
U pouvez utiliser le lien
Quelle est la différence entre un tableau imbriqué et tableau associatif?
ou simplement le lire.
Une table imbriquée est juste un tableau de n éléments.
Une table imbriquée doit être initialisé comme illustré. Il a zéro les éléments de la première. Pour ajouter des éléments que nous utilisons ÉTENDRE. Cette table imbriquée a 10 éléments. Ils sont indexés de 1 à 10. Élément 1 a la valeur 100. Les autres ont la valeur null. Un accès à un non-existant élément, disons le 11ème élément, déclenche une erreur.
Un tableau associatif, d'autre part est un tableau de paires nom/valeur. Nous allons utiliser les numéros (pls_integer généralement) pour le nommer:
Un tableau associatif a besoin d'aucune initialisation. Il est vide et se rempli. Ici, nous avons associé l'élément appelé 1 avec la valeur 100 et l'élément avec le nom 11 avec la valeur 1000. Il y a donc deux éléments dans le tableau. Nous obtenons un pas de données disponibles exception quand on essaie d'accéder à un nom qui n'est pas dans le tableau.
Nous pouvons également utiliser des chaînes de caractères pour les noms:
Vous pouvez utiliser à la fois des collections d'obtenir les données de la table, mais de les utiliser différemment. La table imbriquée a un compte et vous pouvez simplement boucle de 1 à compter pour accéder à ses éléments:
Le tableau associatif, cependant, doivent être lues à partir de ce qui arrive à être le premier indice pour la prochaine et la suivante, et la suivante à l'aide de la PREMIÈRE et de la PROCHAINE.
Les "noms" arriver à être 1, 2, 3, etc. ici (ainsi données par la collecte en vrac) et vous pouvez accéder à v_my_associative_array(1) par exemple. Plus tard, dans votre programme, cependant, après quelques opérations de suppression dans le tableau, il peut y avoir des lacunes, de sorte que vous ne savez pas si un élément nommé 1 existe et si l'élément avant de l'élément 4 se trouve être l'élément 3. Comme avec le volume de recueillir les "noms" pour les éléments n'ont pas de sens, vous ne serait pas vraiment les utiliser, mais plutôt par le biais de la chaîne comme indiqué.
OriginalL'auteur Puneet Kushwah
Index par les tableaux sont définis par l'utilisateur des types de données qui est utilisé pour stocker les éléments de données multiples. Fondamentalement, ces tables sont sans contrainte tables. Index par table comportant deux parties, ceux-ci sont de valeur de champ et le champ de clé. Dans le champ valeur, oracle server stocke les données réelles, où, comme dans le champ de la clé de oracle server stocke les indices, c'est pourquoi les index de la table ‘valeur de la clé’ paires et aussi les index sont par défaut des nombres entiers, et ces indices sont entre le négatif et le positif numéros. Cet indice de champ se comporte comme une clé primaire, il n'accepte pas les valeurs en double.
Généralement l'index par les tableaux sont utilisés pour améliorer la performance ou de l'application, car ces tables sont stockées dans la zone de mémoire, c'est pourquoi ces tables sont appelées aussi une mémoire des tables.
Généralement pour améliorer les performances de l'application, ces index de table sont à l'aide de ‘binaire d'un entier’ type de données, de sorte que nous créons en deux étapes. D'abord, nous créons type, alors seulement nous créons une variable de ce type.
Syntaxe:-
Etape 1:- Tapez le nom de la table type de données (la taille) de l'indice par binary_integer;
Etape n ° 2:- Variablename typename;
Pour Morinformation >>>PL/SQL Index par des tableaux (ou des) PL/SQL des tables (ou) des tableaux associatifs
OriginalL'auteur Dayakark
Une collection est un ensemble ordonné d'un groupe d'éléments, tous du même type. Chaque élément est identifié par un unique indice qui représente sa position dans la collection
PL/SQL fournit trois types de collection −
Index-par des tableaux ou tableau Associatif
Table imbriquée
Variable tableau de taille ou Varray
OriginalL'auteur Bharat Negi
Le but principal de l'utilisation de collection est d'améliorer les performances de l'application. En utilisant des collections, nous pouvons 'cache' statique des données qui doivent être fréquemment consulté et ont besoin d'être modifiés. Ceci permet de réduire les appels à une base de données.
Aussi, si vous avez besoin de traiter un certain nombre d'éléments d'un type similaire, le stockage de ces éléments dans une collection vous permettra de parcourir chaque élément avec facilité, référencement chacun par un index.
Consultez cet article pour obtenir plus d'informations à propos de la collecte
OriginalL'auteur Rahul M