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