comment puis-je exécuter une fonction de TOAD pour Oracle et de lier le résultat d'une grille de données
J'ai une fonction qui prend comme l'un de ses arguments un VARRAY de pl/sql d'Objets. Comment puis-je exécuter cette procédure stockée et de lier le jeu de résultats qu'il renvoie à une grille de données dans TOAD pour Oracle?
Après quelques recherches, j'ai trouvé la réponse à mon problème. Dire votre type varray a été appelé varchar_pair_array et les objets stockés dans ce tableau ont été appelés varchar_pair_object. varchar_pair_object est un simple objet qui a deux varchars que c'est les membres.
Voici le code pour l'exécution d'un proc qui tient en un varray de varchar_pair_object (s):
DECLARE
RetVal SYS_REFCURSOR;
a_simplevalue VARCHAR2(200);
another_simplevalue VARCHAR2(200);
my_array_of_varchar_pairs VARCHAR_PAIR_ARRAY;-- assume varchar_pair_array is defined somewhere else
my_obj VARCHAR_PAIR_OBJECT;-- assume varchar_pair_object is defined somewhere else
my_other_obj VARCHAR_PAIR_OBJECT;BEGIN
a_simplevalue :='hello';
another_simplevalue :='there';
my_obj := VARCHAR_PAIR_OBJECT('nice to meet you','greetings');
my_other_obj := VARCHAR_PAIR_OBJECT('goodbye','ciao');
my_array_of_varchar_pairs := VARCHAR_PAIR_ARRAY();
my_array_of_varchar_pairs.EXTEND(2);-- this should be the number of objects you plan to put into the array
my_array_of_varchar_pairs(1):= my_obj;
my_array_of_varchar_pairs(2):= my_other_obj;
RetVal := my_function ( a_simplevalue, another_simplevalue, my_array_of_varchar_pairs);-- assuming your array takes two varchars and one array of VARCHAR_PAIR_OBJECT (s):to_grid := RetVal;END;
Copier coller ce code dans du CRAPAUD de l'éditeur sql et de le modifier pour l'adapter à votre fonction et types et appuyez sur F9. CRAPAUD va vous demander le type de l' :to_grid variable. Sélectionnez curseur (en supposant que votre fonction retourne un curseur ref) et appuyez sur entrée. CRAPAUD va lier le jeu de résultats d'une grille de données.
Avec très peu de changement, la même chose peut être fait avec une procédure.
Aussi jeter un oeil à la "Exécuter la Procédure" fonction dans le Schéma de Navigateur. Il dispose d'une option pour charger le curseur ref résultats sur une grille après l'exécution. Il a aussi l'avantage qu'il va mémoriser les paramètres que vous avez utilisé la dernière fois que vous avez exécuté la procédure. Le problème, c'est qu'avec des types complexes tels que varray et des objets qu'il ne sera pas (ou ne peuvent pas?) générer le sql pour les types complexes et vous êtes sur votre propre de l'initialisation. Vrai, mais c'est pourquoi il vous permet de modifier le code avant de l'exécuter 🙂 oui. En fait, la plupart de ce code qui a été généré par CRAPAUD d'exécuter la procédure. Je ne savais pas comment modifier ce code pour passer un tableau d'objets, qui est pourquoi j'ai posé la question ici à l'origine. Merci.
Après quelques recherches, j'ai trouvé la réponse à mon problème. Dire votre type varray a été appelé varchar_pair_array et les objets stockés dans ce tableau ont été appelés varchar_pair_object. varchar_pair_object est un simple objet qui a deux varchars que c'est les membres.
Voici le code pour l'exécution d'un proc qui tient en un varray de varchar_pair_object (s):
Copier coller ce code dans du CRAPAUD de l'éditeur sql et de le modifier pour l'adapter à votre fonction et types et appuyez sur F9. CRAPAUD va vous demander le type de l' :to_grid variable. Sélectionnez curseur (en supposant que votre fonction retourne un curseur ref) et appuyez sur entrée. CRAPAUD va lier le jeu de résultats d'une grille de données.
Liens qui m'ont aidé:
http://www.smart-soft.co.uk/Oracle/oracle-plsql-tutorial-part-11.htm (bon tutoriel sur les collections)
http://download.oracle.com/docs/cd/B10501_01/appdev.920/a96624/10_objs.htm#1972 (particulièrement utile dans ce cas est la section sur la déclaration et l'initialisation d'objets)
Avec très peu de changement, la même chose peut être fait avec une procédure.
Le problème, c'est qu'avec des types complexes tels que varray et des objets qu'il ne sera pas (ou ne peuvent pas?) générer le sql pour les types complexes et vous êtes sur votre propre de l'initialisation.
Vrai, mais c'est pourquoi il vous permet de modifier le code avant de l'exécuter 🙂
oui. En fait, la plupart de ce code qui a été généré par CRAPAUD d'exécuter la procédure. Je ne savais pas comment modifier ce code pour passer un tableau d'objets, qui est pourquoi j'ai posé la question ici à l'origine. Merci.
OriginalL'auteur neesh