sql >> Databasteknik >  >> RDS >> Oracle

Hur använder man en tabelltyp i en SELECT FROM-sats?

I SQL får du bara använda tabelltyp som är definierad på schemanivå (inte på paket- eller procedurnivå), och index-by-tabell (associativ array) kan inte definieras på schemanivå. Så - du måste definiera kapslade tabeller så här

create type exch_row as object (
    currency_cd VARCHAR2(9),
    exch_rt_eur NUMBER,
    exch_rt_usd NUMBER);

create type exch_tbl as table of exch_row;

Och sedan kan du använda den i SQL med TABLE-operatorn, till exempel:

declare
   l_row     exch_row;
   exch_rt   exch_tbl;
begin
   l_row := exch_row('PLN', 100, 100);
   exch_rt  := exch_tbl(l_row);

   for r in (select i.*
               from item i, TABLE(exch_rt) rt
              where i.currency = rt.currency_cd) loop
      -- your code here
   end loop;
end;
/


  1. PostgreSQL strömmande replikering - en djupdykning

  2. Lighty för Oracle

  3. Använda konfigurationstabeller för att definiera det faktiska arbetsflödet

  4. Hur visar jag fel för min MySQLi-fråga?