sql >> Databáze >  >> RDS >> Oracle

jak provedu funkci z TOAD pro Oracle a spojím výsledek s datovou mřížkou

Po chvíli hledání jsem našel odpověď na svůj vlastní problém. Řekněme, že váš typ varray se jmenoval varchar_pair_array a objekty uložené v tomto poli se jmenovaly varchar_pair_object. varchar_pair_object je jednoduchý objekt, který má jako členy dva varchary.

Zde je kód pro spuštění procesu, který přijímá varray 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;

Zkopírujte, vložte tento kód do editoru SQL TOAD a změňte jej tak, aby se přizpůsobil vaší funkci a typům, a stiskněte F9. TOAD se vás zeptá na typ proměnné :to_grid. Vyberte kurzor (za předpokladu, že vaše funkce vrátí referenční kurzor) a stiskněte Enter. TOAD sváže sadu výsledků s datovou mřížkou.

Odkazy, které mi pomohly:

http://www.smart-soft .co.uk/Oracle/oracle-plsql-tutorial-part-11.htm (dobrý návod na kolekce)http:/ /download.oracle.com/docs/cd/B10501_01/appdev.920/a96624/10_objs.htm#1972 (obzvláště užitečná je v tomto případě část o deklaraci a inicializaci objektů)

S velmi malou změnou lze totéž provést pomocí procedury.




  1. Předávání pole ints do T-SQL uloženého procesu prostřednictvím entity framework

  2. Provedení velké aktualizace pomocí více tabulek v PostgreSQL

  3. PL/SQL BIND PROMĚNNÉ pro výpočet objemu obdélníkového hranolu

  4. Jak na výstup dat při použití $stmt->fetch(PDO::FETCH_ASSOC);