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

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
Artículos relacionados
Related Posts
6 Comments + Add Comment
Leave a comment
Ayudas!
Encuéntralo aquí
Entradas recientes
- Crear un nuevo usuario en Oracle
- Socket TCP | Ejemplo de Cliente a Servidor y Servidor a Servidor
- Socket UDP | Ejemplo de Cliente a Servidor y Servidor a Servidor
- Cómo crear un Socket UDP en Java
- Cómo crear un Socket TCP en Java
- Ejemplo de Socket en Java
- Definición de Socket
- Integrar un botón de Paypal en tu web
- Cómo subir plugins al repositorio de WordPress
- Tipos de comunicación
- Añadir tu foto de autor en las búsquedas de google
- Toolbar to Share
- Toolbar to Share | WordPress
- Mostrar una imagen desde un Java Bean en Forms
- Modificar temas de WordPress
Recientes
- Ber: Gracias Rodrigo, Buen apunte!
- Rodrigo: OTRA VERSION. CREATE OR REPLACE PROCEDURE PRC_BUSQUEDA2 ( pCAMPO IN VARCHAR2 ) IS TOTAL NUMBER(9) := 0; I...
- Olga: Si, la verdad que podrías hacer muchas combinaciones, es lo bueno de Oracle. Aunque si le pasas un número no te...
- Rodrigo: interesante. Hay que tratar de hacerlo para que soporte cualquier campo en la búsqueda.
- Ber: Hola, No lo recuerdo bien, pero ahí no lo utiliza, la función la copié-pegué de una aplicación que teniamos...
Categorías
- Android (3)
- Bases de datos (68)
- Data Mining (2)
- MySql (2)
- Oracle (58)
- SGBD (4)
- Cajon desastre (4)
- Consolas (5)
- Desarrollo web (54)
- Blogger (1)
- Google Maps (2)
- SEO (9)
- Wordpress (17)
- Ensamblador (13)
- Codigo (7)
- Facebook (API) (12)
- Adsense (1)
- Aplicación Test (1)
- Conectar con Facebook (3)
- Facebook en Español (2)
- Publicar Facebook (4)
- Flash (1)
- Flex (1)
- Forms (1)
- Hardware (17)
- Arquitectura (2)
- Iphone (5)
- Java (22)
- JavaScript (16)
- Php (8)
- Proyectos Programación (8)
- Redes (5)
- Software (21)
- Ubuntu (4)
- Vb.net (4)
- Windows (1)
- XML (5)
me gusta, me gusta…
Gracias!!! Como anima que la gente te deje este tipo de comentarios!.
interesante.
Hay que tratar de hacerlo para que soporte cualquier campo en la búsqueda.
Si, la verdad que podrías hacer muchas combinaciones, es lo bueno de Oracle.
Aunque si le pasas un número no te dará error y buscará las coincidencias.
OTRA VERSION.
CREATE OR REPLACE PROCEDURE PRC_BUSQUEDA2
(
pCAMPO IN VARCHAR2
)
IS
TOTAL NUMBER(9) := 0;
I NUMBER(5) := 0;
BEGIN
FOR C1 IN
(
SELECT DISTINCT
TABLE_NAME ,
COLUMN_NAME ,
DATA_TYPE
FROM
USER_TAB_COLUMNS
WHERE
COLUMN_NAME LIKE UPPER(pCAMPO)
AND DATA_TYPE IN ( ‘CHAR’, ‘NUMBER’, ‘VARCHAR2′)
AND TABLE_NAME NOT LIKE ‘BIN%’
)
LOOP
IF ( C1.DATA_TYPE IN (‘CHAR’,'VARCHAR2′)) THEN
TOTAL := I + 1;
ELSE
TOTAL := I + 1;
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;
/
Gracias Rodrigo,
Buen apunte!