sql >> Databasteknik >  >> RDS >> Oracle

hur kör jag en funktion från TOAD för Oracle och binder resultatet till ett datanät

Efter lite letande hittade jag svaret på mitt eget problem. Säg att din varray-typ hette varchar_pair_array och att objekten som lagrades i denna array hette varchar_pair_object. varchar_pair_object är ett enkelt objekt som har två varchars som medlemmar.

Här är koden för att köra en proc som tar in en varray av 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;

Kopiera klistra in den här koden i TOADs sql-editor och ändra den så att den anpassar sig till din funktion och typer och tryck på F9. TOAD kommer att fråga dig vilken typ av variabeln :to_grid. Välj markör (förutsatt att din funktion returnerar en ref-markör) och tryck på enter. TOAD kommer att binda resultatuppsättningen till ett datarutnät.

Länkar som hjälpte mig:

http://www.smart-soft .co.uk/Oracle/oracle-plsql-tutorial-part-11.htm (bra handledning om samlingar)http:/ /download.oracle.com/docs/cd/B10501_01/appdev.920/a96624/10_objs.htm#1972 (särskilt användbart i det här fallet är avsnittet om att deklarera och initiera objekt)

Med mycket liten förändring kan samma sak göras med en procedur.




  1. Använd MySQL relationsdatabaser på Fedora 12

  2. PostgreSQL-strömning vs logisk replikering – jämförelse

  3. Lagra och jämföra unika kombinationer

  4. Skapa geografipolylinje från punkter i T-SQL