PL / SQL: Sélection d'une table dans un tableau assoc
Je suis en train de sélectionner des données en pl/sql tableau associatif dans une requête. Je sais que je peux le faire avec une clé codée en dur, mais je voulais voir si il y avait moyen que je pouvais faire référence à une autre colonne (la colonne de la clé) à la place.
DECLARE
TYPE VarAssoc IS TABLE OF varchar2(2) INDEX BY varchar2(3);
vars VarAssoc;
BEGIN
SELECT foo, bar INTO vars(foo) FROM schema.table;
END;
Je reçois un message d'erreur indiquant foo doit être déclarée quand je fais cela. Est-il possible de créer mon associé de tableau dans une seule requête ou dois-je me rabattre sur une boucle FOR?
source d'informationauteur Seaux
Vous devez vous connecter pour publier un commentaire.
Viens de lire votre commentaire sur l'APC de réponse, il semble que vous avez compris ce sur votre propre. Mais j'ai pensé que je l'avais mis la réponse en tout cas pour les futurs chercheurs.
C'est plus simple de code, mais n'a pas l'avantage de vitesse de l'aide de BULK COLLECT. Juste une boucle sur les lignes retournées par la requête et de définir les éléments du tableau associatif individuellement.
Qu'il serait bien si c'était possible, mais ce n'est pas un moyen simple d'y parvenir.
Ce que nous pouvons faire est de charger les données dans une régulière, PL/SQL de la collecte et ensuite chargez-la dans un tableau associatif. Whethter c'est plus rapide que seulement en boucle autour de la table est une question de tatse: il n'a probablement pas d'importance, sauf si nous avons affaire à des charges de données.
Compte tenu de ce test de données ...
...nous pouvons remplir un tableau associatif en deux étapes:
La vraie question est probablement celle de savoir si le remplissage d'un tableau associatif effectue mieux que de simplement la sélection de lignes dans la table. Certes, si vous avez 11g Enterprise edition, vous devriez envisager jeu de résultats de la mise en cache à la place.
êtes-vous absolument mariés à des tableaux associatifs? Et je suppose que vous faites cela parce que vous voulez être en mesure de faire une recherche sur le tableau à l'aide d'une touche de caractère.
Si oui, avez-vous envisagé la mise en œuvre de la présente comme un type de collection à la place?
par exemple
Cela vous donne la liste de choix de par son caractère de valeur de la clé et vous permet de faire tout en vrac.