Skip site navigation (1) Skip section navigation (2)

Re: How to manipulate a cursor returned by a PL/pgSQL in a PHP

From: "Sebastien Baudry" <sbaudry(at)yahoo(dot)com>
To: <pgsql-php(at)postgresql(dot)org>
Subject: Re: How to manipulate a cursor returned by a PL/pgSQL in a PHP
Date: 2003-10-06 08:17:51
Message-ID: KAECIKDEBEFAPMGIJGOGMELLENAA.sbaudry@yahoo.com (view raw or flat)
Thread:
Lists: pgsql-php
Hi.
I finally found out how to fetch the cursor returned by a PostGreSQL function in my PHP script.
Here from the Postgres archives: http://archives.postgresql.org/pgsql-php/2002-11/msg00054.php

This is the "head" of function:
 --------------
 create or replace function match(refcursor,int8) returns 
 refcursor as ' DECLARE
    vid ALIAS FOR $2;
    vcursor ALIAS FOR $1;
 BEGIN
 (...)
 return vcursor;
 (...)
 --------------
 
 And this is php call:
 --------------
    $conn = pg_pconnect ($conn_string);
    $qry = "BEGIN; SELECT 
 matche('cursorsalida',$identificador); fetch all in cursorsalida; ";
     $result = pg_query ($conn, $qry);
     $num = pg_num_rows($result);
     for ($i=0; $i < $num; $i++) {
       $r = pg_fetch_row($result, $i);
 (...)
 ---------------

You have to pass a refcursor as input parameter.

-----Message d'origine-----
De : Andrew J. Kopciuch [mailto:akopciuch(at)olympusproject(dot)org]
Envoyé : Sunday, October 05, 2003 5:22 PM
À : Rod Taylor
Cc : sebastien(dot)baudry(at)baudry-engineering(dot)com; Sebastien BAUDRY;
pgsql-php(at)postgresql(dot)org
Objet : Re: [PHP] How to manipulate a cursor returned by a PL/pgSQL in a
PHP


On Sunday 05 October 2003 06:22, Rod Taylor wrote:
> On Sun, 2003-10-05 at 04:38, Andrew J. Kopciuch wrote:
> > On Sunday 05 October 2003 01:32, Sebastien BAUDRY wrote:
> > > Hi.
> > > My function returns a cursor and I don't know how to
> > > fetch the cursor in my PHP script.
> > > Anybody could help me?
> >
> > PHP does not directly support cursors under PostgreSQL.  :-(
>
> Huh? Cursors in PostgreSQL are accessible via the standard query
> interface within PHP.
>
> It's 2 queries, one to create the cursor, one to request the number of
> tuples. PHP does not need any special logic to handle this.
>
> pg_query('DECLARE thecursor CURSOR FOR ....')
>
> pg_query('FETCH ...');
>
> The fetch will act just like a select in regards to returned data.

Yes.  I should have elaborated a bit more.  

I think this is in reference to his earlier post mentioning a REF CURSOR from 
a stored procedure.  There is no support for binding a PHP var to a cursor 
like the Oracle functions offer. (OCINewCursor, OCIFreeCursor)

You can always manage things directly with the query interface.  I think he 
wants to manage things with the PHP interface.  And you can't with the 
PostgreSQL functions provided.  AFAIK.

That's all I was saying,

cheers,

Andy



In response to

pgsql-php by date

Next:From: Michael HannaDate: 2003-10-13 02:01:35
Subject: newlines won't display in browser
Previous:From: Andrew J. KopciuchDate: 2003-10-05 15:21:47
Subject: Re: How to manipulate a cursor returned by a PL/pgSQL in a PHP

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group