Actually I just discovered that sqlite4delphi uses exactly the technique
that I want. It parses the original query to extract the table name then
constructs a new update statement. Turns out it isn't too hard.

Regards,

Chris.

> -----Original Message-----
> From: Chris Waters [mailto:[EMAIL PROTECTED]
> Sent: Sunday, April 18, 2004 1:33 PM
> To: [EMAIL PROTECTED]
> Subject: RE: [sqlite] Updating with a Cursor
>
>
> Hi,
>
> I am replacing a non-SQL database engine and so I'm trying to
> match the existing DB API structure as closely as possible to
> minimize the required code restructuring.
>
> The type of structure I am aiming for is like Oracle's PL/SQL:
>
>   cursor c_f is
>     select a,b from f where length(b) = 5 for update;
>     v_a f.a%type;
>     v_b f.b%type;
> begin
>   open c_f;
>   loop
>     fetch c_f into v_a, v_b;
>     exit when c_f%notfound;
>     update f set a=v_a*v_a where current of c_f;
>   end loop;
>
> I believe that the 'where current of c_f' part of the update
> statement is simply translated into 'where rowid = current_rowid'
> which is the most efficient way of doing an update. At least for
> Oracle this is the efficient way to do an update on a single record.
>
> Regards,
>
> Chris.
>
> > -----Original Message-----
> > From: Andrew Piskorski [mailto:[EMAIL PROTECTED]
> > Sent: Sunday, April 18, 2004 12:04 PM
> > To: [EMAIL PROTECTED]
> > Cc: Chris Waters
> > Subject: Re: [sqlite] Updating with a Cursor
> >
> >
> > On Sun, Apr 18, 2004 at 11:04:14AM -0700, Chris Waters wrote:
> >
> > > The idea is that I can iterate through a set of records with
> the cursor,
> > > updating as I go. The challenge is working out how to implement the
> > > UpdateRow() function. I am happy to accept the costraint that
> > the query must
> >
> > > Implementing another layer of SQL parsing is less than ideal
> > since I have
> > > found that the parser already dominates sqlite performance
> for my tests
> > > (in-memory DB with many different queries using indexes).
> >
> > Why do you want to write special C cursor code rather than just using
> > a single SQL update statement?  Performance?  If so, maybe it would be
> > better to create a way to just cache and re-use the SQL query plan,
> > rather than throwing out the use of SQL altogether?
> >
> > --
> > Andrew Piskorski <[EMAIL PROTECTED]>
> > http://www.piskorski.com/
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to