Saltar al contenido
Codifíca.me | Desarrollo web | Programación

Procedimiento de búsqueda de un valor en las tablas de la BBDD

1 junio, 2011

Este procedimiento buscará un valor en las tablas de BBDD, excepto en la papelera de reciclaje, y devolverá en que tabla y columna se encuentra y las veces que se repite.

CREATE OR REPLACE PROCEDURE BUSQUEDA(CAMPO IN VARCHAR2)
IS
TOTAL NUMBER(9);
SELECT_COUNT VARCHAR2(512);
BEGIN
FOR C1 IN ( SELECT DISTINCT TABLE_NAME , COLUMN_NAME , DATA_TYPE
FROM USER_TAB_COLUMNS
WHERE DATA_TYPE IN (‘CHAR’,’NUMBER’,’VARCHAR2′)
AND TABLE_NAME NOT LIKE ‘BIN%’)
LOOP
TOTAL := 0;
IF C1.DATA_TYPE IN (‘CHAR’,’VARCHAR2′) THEN
SELECT_COUNT := ‘SELECT COUNT(*) FROM ‘ || C1.TABLE_NAME ||
‘ WHERE ‘ ||C1.COLUMN_NAME || ‘ LIKE ‘ ||
”” || ‘%’ || CAMPO || ‘%’ || ”” ;
EXECUTE IMMEDIATE SELECT_COUNT INTO TOTAL;
ELSE
SELECT_COUNT := ‘SELECT COUNT(*) FROM ‘ || C1.TABLE_NAME ||
‘ WHERE ‘ ||C1.COLUMN_NAME || ‘ = ‘ || CAMPO ;
EXECUTE IMMEDIATE SELECT_COUNT INTO TOTAL;
END IF;
IF TOTAL != 0 THEN
DBMS_OUTPUT.PUT_LINE(C1.TABLE_NAME || ‘.’ ||C1.COLUMN_NAME||’: ‘||TO_CHAR(TOTAL));
END IF;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SUBSTR(SQLERRM, 1,150));
END;
/

set serveroutput on size 1000000
exec BUSQUEDA(‘00000111’);

Resultado:

TABLA1.CDDNI: 12
TABLA2.CDDNI: 7
TABLA3.CDDNI: 1