I have a PL/SQL process that I use to purge rows from a table
that grows by about 14M rows/month. Even though it's PL/SQL,
the process should be (might be?) transportable to Perl.

Basically, it looks like this:

Define SQL statement to gather the rows (PL/SQL cursor);
ctr = 0;
For each row:
delete from table where recid = cursor.recid;
ctr += 1;
if ctr > 10000 {
ctr = 0;

I don't know enough about the DBI to know if the 'recid'
field from PL/SQL can be used in Perl, but if you get it
to work I'd be interested in hearing about it.


-----Original Message-----
From: Steve Sapovits
Sent: Wednesday, June 22, 2005 11:18 PM
To: dbi-users@perl.org
Subject: Oracle cursor help

I have a few Oracle tables that have gotten way too big. Normal
DELETE/WHERE clauses consume too many resources. I know enough
to know that cursors would be more efficient here but I don't
know enough to actually start using them. Does anyone have an
example or two (or three) to bootstrap me? What I'd essentially
want to do is loop through all rows, look at a few column settings,
and delete those that fall into certain categories (e.g., certain
dates being so old and certain status fields not being set to a
set value, etc.). I can also limit the row set up front with a
pretty simple WHERE clause -- whatever is more efficient is what
I'm aiming for (it wasn't clear to me if limiting up front with
WHERE clauses defeated the efficiency of cursors ...)

Steve Sapovits steves06@comcast.net

Search Discussions

Discussion Posts


Follow ups

Related Discussions

Discussion Navigation
viewthread | post
posts ‹ prev | 4 of 16 | next ›
Discussion Overview
groupdbi-users @
postedJun 23, '05 at 6:18a
activeJun 27, '05 at 6:20p



site design / logo © 2022 Grokbase