-- How we're required to do it
create or replace procedure find_string_dirty(str in varchar)
as begin
    dbms_output.put_line('Текст запроса: ' || str);
    dbms_output.put_line('');
    dbms_output.put_line(' No. Имя объекта       # строки       Текст');
    dbms_output.put_line(' --- -------------------   -------------  ' ||
        '--------------------------------------------');
    for r in (select row_number() over(order by line) as id,
        name, line, text from sys.all_source
        where lower(text) like '%' || lower(str) || '%' and
        type in ('PROCEDURE', 'TRIGGER', 'FUNCTION'))
    loop
        dbms_output.put_line(
            to_char(r.id, '999')
            || ' ' ||
            rpad(substr(r.name, 0, 20), 20, ' ')
            || '  ' ||
            rpad(trim(to_char(r.line, '9999999999999')), 13, ' ')
            || '  ' ||
            trim(replace(replace(r.text, chr(10)), chr(13)))
        );
    end loop;
end;
/

set serveroutput on format truncated
execute find_string_dirty('Н_Люди')

