--- [EMAIL PROTECTED] wrote:

> 
> 
> 
> 
> 
> Hello list!
> I have run into problems trying to use SQLite via perl
> DBA.
> According to the SQLite.org web site, DECLARE CURSOR
> should be supported
> (actually, it is not in the list of the only SQL not
> supported).
> I get a error saying "error near DECLARE".  I have tried
> to declare cursor
> in many ways but always get the same error.
> If "cursro" is not supported, does anybody have a
> suggestion on how to
> achieve the same end?

As I remember, the PERL DBI doesn't support cursors. 
Instead, depending on how you requested the data, you
end-up  with something like an array, and you iterate
through it.  I leave it vague here, because, like with most
other things PERL, there are numerous ways to get what you
want :-)

I for small to moderate sized datasets, like the DBI
utility methods. $dbh->selectall_arrayref('select a, b, c
from t1'); returns an array (records) of arrays (columns in
record).

Otherwise, you can do the 3 or 4-step process of:

$sth = $dbh->prepare('select a, b, c from t1');
$sth->execute();
$sth->bind_columns(undef, \$col_a, \$col_b, \$col_c);
while ($sth->fetchrow_arrayref()) {
   #do something with the row data
   print "$col_a\t$col_b\t$col_c\n";  #perhaps
}

When you use the multi-step prepare/execute/fetch
algorithm, once a row is fetched, you can't back-up later
and fetch it again.

If you use the utility methods like
$dbh->selectall_arrayref() and its cousins, you iterate
through the array, and can re-set the iterator to jump
forward or back at any time.

Have a look at the DBI documentation.  I always need more
explanation then those PERL module docs provide, and I
found the O'Reilly PERL DBI book very useful.

There's also some useful explanations and usage tips
available.  Just do a Google search on "perl dbi".

Of particular interest for me was this presentation
http://search.cpan.org/src/TIMB/DBI_AdvancedTalk_2004/index.htm

 -Clark

Reply via email to