Oracle’da bir metnin hangi tablolarda geçtiğini nasıl bulabiliriz?
Oracle’da bir metnin hangi tablolarda geçtiğini bulmak için aşağıdaki örnek sorguyu kullanabilirsiniz:
DECLARE
v_search VARCHAR2(100) := '20.00.00.00'; --ARAMAK ISTEDIGINIZ METIN
v_count NUMBER;
v_sql VARCHAR2(1000);
BEGIN
FOR r IN (SELECT c.owner, c.table_name, c.column_name
FROM all_tab_columns c
JOIN all_tables t ON t.owner = c.owner
AND t.table_name = c.table_name
WHERE c.data_type LIKE '%CHAR%'
AND c.owner = 'CEM' --TABLONUN OWNERI
) LOOP
v_sql := '
SELECT COUNT(*)
FROM ' || r.owner || '.' || r.table_name || '
WHERE UPPER(TRIM(' || r.column_name || ')) LIKE :1';
BEGIN
EXECUTE IMMEDIATE v_sql
INTO v_count
USING '%' || UPPER(v_search) || '%';
IF v_count > 0 THEN
DBMS_OUTPUT.PUT_LINE(r.owner || '.' || r.table_name || ' -> ' ||
r.column_name || ' (' || v_count || ' kayit)');
END IF;
EXCEPTION
WHEN OTHERS THEN
NULL; -- erisilemeyen tablolari atla
END;
END LOOP;
END;
Yorum gönder