Capitulos de este wiki
  1. 1 Parametros
  2. 2 Ejemplos

2 - Ejemplos

[editar]
Tutorial creado por José Manuel. Extraido de: http://www.lawebdejm.com
30 de Noviembre de 1999
execute DeleteMasivo('EMPLEADOS', 'WHERE NUM BETWEEN 1 AND 9999', 100);
execute DeleteMasivo('EMPLEADOS', , 100);

|| CREATE PROCEDURE DeleteMasivo( NombreTabla IN VARCHAR2, CondicionWhere IN VARCHAR2 DEFAULT NULL, RegistrosCommit IN NUMBER DEFAULT 1000 ) IS idSelect INTEGER; idDelete INTEGER; execSelect INTEGER; execDelete INTEGER; SQLCursor VARCHAR2(2000); ROWIDDelete ROWID; BEGIN -- -- Se prepara un cursor dinánico para seleccionar los ROWIDs -- de los registros a borrar. -- SQLCursor := 'SELECT rowid FROM ' || NombreTabla || ' ' || CondicionWhere; idSelect := DBMS_SQL.OPEN_CURSOR; DBMS_SQL.PARSE(idSelect, SQLCursor, DBMS_SQL.v7); DBMS_SQL.DEFINE_COLUMN_ROWID(idSelect, 1, ROWIDDelete); execSelect := DBMS_SQL.EXECUTE(idSelect); -- -- Se prepara el cursor para borrar los registros -- idDelete := DBMS_SQL.OPEN_CURSOR; DBMS_SQL.PARSE(idDelete, 'DELETE FROM ' || NombreTabla || ' WHERE ROWID = :rowid_delete', DBMS_SQL.v7); LOOP IF DBMS_SQL.FETCH_ROWS(idSelect) = THEN -- -- Obtiene los ROWIDs de las filas a borrar -- DBMS_SQL.COLUMN_VALUE(idSelect, 1, ROWIDDelete); DBMS_SQL.BIND_VARIABLE(idSelect, 'rowid_delete', ROWIDDelete); -- -- Ejecuta el delete para las filas obtenidas
execDelete := DBMS_SQL.EXECUTE(idDelete); -- -- Hace un commit cada n filas. -- n se especifica en el parámetro "RegistrosCommit" -- IF MOD(DBMS_SQL.LAST_ROW_COUNT, RegistrosCommit) = THEN COMMIT; END IF; ELSE EXIT; END IF; END LOOP; -- -- Hace commit otra vez, para validar el ultimo grupo de registros -- COMMIT; DBMS_SQL.CLOSE_CURSOR(idSelect); DBMS_SQL.CLOSE_CURSOR(idDelete); END DeleteMasivo; ||
[editar]

1 opinión

Excelente iniciativa.

Bastante buena la iniciativa ayuda mucho.

Tutoriales relacionados con 'Script de borrado masivo de filas en Oracle'

Esta función de PL/SQL realiza un borrado masivo de filas, haciendo COMMIT cada cierto número,... Más »

Autor y licencia de 'Script de borrado masivo de filas en Oracle'


Tutorial de José Manuel. Extraido de: http://www.lawebdejm.com CopyLeft
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.