Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie führe ich eine Funktion von TOAD für Oracle aus und binde das Ergebnis an ein Datengrid

Nach einigem Suchen habe ich die Antwort auf mein eigenes Problem gefunden. Angenommen, Ihr Varray-Typ hieß varchar_pair_array und die in diesem Array gespeicherten Objekte hießen varchar_pair_object. varchar_pair_object ist ein einfaches Objekt, das zwei Varchars als Mitglieder hat.

Hier ist der Code zum Ausführen einer Prozedur, die ein varray von varchar_pair_object (s) aufnimmt:

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;

Kopieren Sie diesen Code, fügen Sie ihn in den SQL-Editor von TOAD ein und ändern Sie ihn, um ihn an Ihre Funktion und Typen anzupassen, und drücken Sie F9. TOAD fragt Sie nach dem Typ der :to_grid-Variablen. Wählen Sie den Cursor aus (vorausgesetzt, Ihre Funktion gibt einen Verweis-Cursor zurück) und drücken Sie die Eingabetaste. TOAD bindet die Ergebnismenge an ein Datengrid.

Links, die mir geholfen haben:

http://www.smart-soft .co.uk/Oracle/oracle-plsql-tutorial-part-11.htm (gutes Tutorial zu Sammlungen)http:/ /download.oracle.com/docs/cd/B10501_01/appdev.920/a96624/10_objs.htm#1972 (besonders hilfreich in diesem Fall ist der Abschnitt über das Deklarieren und Initialisieren von Objekten)

Mit sehr wenig Änderung kann dasselbe mit einer Prozedur durchgeführt werden.