Имя материализованного представления, которое я хочу использовать как часть некоторого SQL-кода в хранимой процедуре, содержится в таблице.Мне нужно получить имя таблицы, хранящейся в переменной, чтобы процедура могла использовать ее.Часть, которая получит имя таблицы, находится в цикле for.Как я могу использовать переменную в цикле?
Это пример того, что я имею в виду:
declare
l_dblink varchar2(100) := 'DB1';
V_MV_NAME varchar2(2000);
begin
SELECT mv_name into V_MV_NAME
FROM track_mv
WHERE
CREATED_AT = (select MAX(CREATED_AT) from track_mv);
for rws in (
select /*+parallel (4)*/ a.owner,a.table_name, round(sum(b.sum_bytes),2) TOT_OBJECT_SIZE_MB, EST_ONE_ROW_MB
from dba_tables@DB1 a, MAT_VIEW_ANON b
where a.table_name = b.segment_name
and a.table_name in
(select table_name from BOB_TABLE where driver_table is null)
and a.owner in (select distinct schema from BOB_TABLE c)
group by a.owner,a.table_name
order by a.table_name
)
loop...
Здесь V_MV_NAME содержит переменную.Я хочу использовать эту переменную в теле запроса:
for rws in (
select /*+parallel (4)*/ a.owner,a.table_name, round(sum(b.sum_bytes),2) TOT_OBJECT_SIZE_MB, EST_ONE_ROW_MB
from dba_tables@DB1 a, MAT_VIEW_ANON b
where a.table_name = b.segment_name
Так что она может выглядеть примерно так:
from dba_tables@DB1 a, ||V_MV_NAME|| 'b'
или аналогично.Код уже на месте с жестко закодированными значениями.Это было бы проще всего сделать, если это возможно?