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

Comment utiliser un type de table dans une instruction SELECT FROM ?

Dans SQL, vous ne pouvez utiliser que le type de table défini au niveau du schéma (pas au niveau du package ou de la procédure), et la table indexée par (tableau associatif) ne peut pas être définie au niveau du schéma. Donc - vous devez définir une table imbriquée comme celle-ci

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;

Et puis vous pouvez l'utiliser en SQL avec l'opérateur TABLE, par exemple :

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;
/