Обсуждение: perl use of cursors and fetch forward

Поиск
Список
Период
Сортировка

perl use of cursors and fetch forward

От
John Frank
Дата:
Can someone tell me how to use Postgres cursors through perl?  A sample is
below.  Is there some way to keep the transaction active between
$conn-exec calls?

#!/usr/local/bin/perl
use Pg;
my $conn = Pg::connectdb("dbname = test");

my $result = $conn->exec("begin work; declare c1 cursor for select fld1
from tbl1 ; ");

$result = $conn->exec("fetch forward 1 in c1;");
print "Hurray, I fetched a row: " . $result->fetchrow . "\n";

$result = $conn->exec("end work;");



jrf@roog:~/$ perl test_cursor.pl
NOTICE:  PerformPortalFetch: portal "c1" not found
Hurray, I fetched a row:
NOTICE:  COMMIT: no transaction in progress
jrf@roog:~/$






Re: perl use of cursors and fetch forward

От
John Frank
Дата:
dooh.  never mind.

this works if the "begin work;" and "declare ...;" are in separate exec
requests.



On Mon, 29 Jan 2001, John Frank wrote:

>
> Can someone tell me how to use Postgres cursors through perl?  A sample is
> below.  Is there some way to keep the transaction active between
> $conn-exec calls?
>
> #!/usr/local/bin/perl
> use Pg;
> my $conn = Pg::connectdb("dbname = test");
>
> my $result = $conn->exec("begin work; declare c1 cursor for select fld1
> from tbl1 ; ");
>
> $result = $conn->exec("fetch forward 1 in c1;");
> print "Hurray, I fetched a row: " . $result->fetchrow . "\n";
>
> $result = $conn->exec("end work;");
>
>
>
> jrf@roog:~/$ perl test_cursor.pl
> NOTICE:  PerformPortalFetch: portal "c1" not found
> Hurray, I fetched a row:
> NOTICE:  COMMIT: no transaction in progress
> jrf@roog:~/$
>
>
>
>
>
>


Re: Re: perl use of cursors and fetch forward

От
Tom Lane
Дата:
John Frank <jrf@segovia.mit.edu> writes:
> this works if the "begin work;" and "declare ...;" are in separate exec
> requests.

This is fixed for 7.1.  The problem in 7.0 is that the check for "are we
inside a transaction block?" is done at the wrong time, ie, during
initial parsing of the query string ...

            regards, tom lane