RE: Oracle cursor help
- From: mvergara@xxxxxxxxxxx (Michael \ Vergara)
- Date: Thu, 23 Jun 2005 07:50:05 -0700
Steve:
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 {
commit;
ctr = 0;
}
next
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.
Cheers,
Mike
-----Original Message-----
From: Steve Sapovits [mailto:steves06@xxxxxxxxxxx]
Sent: Wednesday, June 22, 2005 11:18 PM
To: dbi-users@xxxxxxxx
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@xxxxxxxxxxx
.
- Follow-Ups:
- Re: Oracle cursor help
- From: Martin Hall
- Re: Oracle cursor help
- Prev by Date: RE: [dbi] Re: Attempt to initiate a new SQL Server operation with results pending.
- Next by Date: Re: Oracle cursor help
- Previous by thread: Re: Oracle cursor help
- Next by thread: Re: Oracle cursor help
- Index(es):
Relevant Pages
|
|