Я ищу решение для поиска строки/числа в оракуле всех таблиц и столбцов.Как выполнить блок в oracle?
Я проверил онлайн и нашел много решений.
Но когда я выполняю ниже решение в SQL-разработчике SQL, он создает анонимный блок.
Может ли кто-нибудь помочь мне, как использовать ниже решение в Oracle, чтобы получить результаты.
DECLARE
match_count integer;
v_search_string varchar2(4000) := <<string you want to search for>>;
BEGIN
FOR t IN (SELECT owner, table_name, column_name FROM all_tab_columns) LOOP
EXECUTE IMMEDIATE
'SELECT COUNT(*) FROM '||t.owner || '.' || t.table_name||
' WHERE '||t.column_name||' = :1'
INTO match_count
USING v_search_string;
IF match_count > 0 THEN
dbms_output.put_line(t.owner || '.' || t.table_name ||' '||t.column_name||' '||match_count);
END IF;
END LOOP;
END;
/
Помогите, поскольку я новичок в Oracle.
Спасибо advabce
Я не уверен, что вы подразумеваете под «он создает анонимный блок». Анонимный блок не хранится нигде, поэтому не имеет смысла говорить о «создании» его, как если бы вы создали хранимый объект, например процедуру или функцию. Вы выполняете анонимный блок? Вы видите какие-то результаты? Включили ли вы 'dbms_output' для своей сессии? Вы положили строку, которую вы действительно ищете, в строке «<< строка, которую вы хотите найти >>»? Вы получаете сообщение об ошибке? –
@JustinCave: Спасибо за ответ .. Да, я ввел строку, которую я хочу найти в базе данных. Я просто выполняю это в SQL-окне в SQL-разработчике SQL, и он показывает мне, что анонимный блок создан. Итак, вот мой запрос, как я должен выполнить в SQL-разработчике SQL? –
Что такое сообщение? Вы видите, что «процедура PL/SQL успешно завершена»? Это означает, что анонимный блок был успешно выполнен. Как я уже сказал, анонимные блоки не создаются в том смысле, что такие постоянные объекты, как процедуры и функции. Проблема в том, что вы выполняете анонимный блок, но не видите какой-либо вывод из 'dbms_output'? Если это так, я закрою это как дубликат вопроса, с которым я связан. –