coleccion de manuales de la herramienta
anty spyware ad-aware
1. Parámetros:
*
NombreTabla (VARCHAR2): Nombre de la tabla donde se
van a borrar los registros
* CondiciónWhere (VARCHAR2): Condición
de borrado. Debe incluir la palabra "WHERE"
como inicio de la cadena.
* RegistrosCommit (NUMBER): Frecuencia con que se
realiza un COMMIT.
2. Ejemplos
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) = 0 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) = 0
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);
Licencia Creative Commons: http://creativecommons.org/licenses/by/2.0/es/
Este contenido ha sido recopilado por el equipo
y colaboradores de programatium.com. Todo el contenido
recopilado se ha obtenido respetando y comunicando
en nuestro site la licencia de cada fuente. Si detectas
que por error hemos subido algún curso que
tiene derechos de autor envianos un e-mail y lo
eliminaremos (programatium@gmail.com).