Oracle
 sql >> Base de données >  >> RDS >> Oracle

comment puis-je exécuter une fonction de TOAD pour Oracle et lier le résultat à une grille de données

Après quelques recherches, j'ai trouvé la réponse à mon propre problème. Supposons que votre type de varray s'appelle varchar_pair_array et que les objets stockés dans ce tableau s'appellent varchar_pair_object. varchar_pair_object est un objet simple qui a deux varchars comme membres.

Voici le code pour exécuter un proc qui prend 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;

Copiez-collez ce code dans l'éditeur SQL de TOAD et modifiez-le pour l'adapter à votre fonction et à vos types, puis appuyez sur F9. TOAD vous demandera le type de la variable :to_grid. Sélectionnez le curseur (en supposant que votre fonction renvoie un curseur de référence) et appuyez sur Entrée. TOAD liera le jeu de résultats à 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 (la section sur la déclaration et l'initialisation des objets est particulièrement utile dans ce cas)

Avec très peu de changement, la même chose peut être faite avec une procédure.