Нужно найти таблицу с определенным столбиком, и в этой таблице (их может быть несколько) в найденной таблице, с этим столбиком нужно найти значение

И вывести название таблицы, в которой есть такое значение. Если таких таблиц несколько то вывести несколько названий. В принципе, нужное значение находится видимо, но при этом пишет, что однострочный подзапрос возвращает несколько строк. Подскажите как быть и что изменить в скрипте.

-- Local variables here
type namesarray IS VARRAY(40) OF VARCHAR2(100);
i VARCHAR2(200);
tn USER_TAB_COLUMNS.TABLE_NAME%type;
data namesarray;
sqlrow VARCHAR2(400);
conditio VARCHAR2(400) := q'['Земельные участки с/х (Земельные участки)']';
where_clause VARCHAR2(400) := ' where NAME = ' || conditio;

begin
-- Test statements here
for cur in (select * from USER_TAB_COLUMNS t where t.COLUMN_NAME = 'NAME') loop
   tn := cur.table_name;
   sqlrow := 'select NAME from ' || tn || where_clause;
     if tn != 'V_LIMIT_PARTICIPANT' and cur.data_type = 'VARCHAR2' then
begin

EXECUTE IMMEDIATE sqlrow bulk collect into data;
i := data.FIRST;
while i is not null loop
      DBMS_OUTPUT.put_line(i);
      i := data.next(i);
end loop;
exception
when NO_DATA_FOUND then continue;
end;
end if;
end loop;  
end;

Ответы (0 шт):