Re: Cursor en Procedimiento plpgsql

Lists: pgsql-es-ayuda
From: Luis Guevara <luis(dot)a(dot)guevara(at)gmail(dot)com>
To: PostgreSQL-foro <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Cursor en Procedimiento plpgsql
Date: 2006-01-19 15:05:40
Message-ID: fa2b6e3a0601190705n7d41e19bi@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Hola Amigos:

Quiero crear un procedimiento plpgsql que contenga lo siguiente:

1.- Crear un cursor o tabla temporal
2.- Agregar registros a ese cursor
3.- Devolver el cursor.

¿Es posible eso? ¿Pueden darme alguna idea ?

Gracias

--
atte.
Luis Guevara


From: Jaime Casanova <systemguards(at)gmail(dot)com>
To: Luis Guevara <luis(dot)a(dot)guevara(at)gmail(dot)com>
Cc: PostgreSQL-foro <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Cursor en Procedimiento plpgsql
Date: 2006-01-19 15:21:16
Message-ID: c2d9e70e0601190721q65346edt1d8895679199d25a@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

On 1/19/06, Luis Guevara <luis(dot)a(dot)guevara(at)gmail(dot)com> wrote:
> Hola Amigos:
>
> Quiero crear un procedimiento plpgsql que contenga lo siguiente:
>
> 1.- Crear un cursor o tabla temporal
> 2.- Agregar registros a ese cursor
> 3.- Devolver el cursor.
>
> ¿Es posible eso? ¿Pueden darme alguna idea ?
>
> Gracias
>
>
>
> --
> atte.
> Luis Guevara

si... aqui tienes algunos ejemplos...
http://www.postgresql.org/docs/current/static/plpgsql-cursors.html#PLPGSQL-CURSOR-USING

--
Atentamente,
Jaime Casanova
(DBA: DataBase Aniquilator ;)


From: Luis Guevara <luis(dot)a(dot)guevara(at)gmail(dot)com>
To: Jaime Casanova <systemguards(at)gmail(dot)com>
Cc: PostgreSQL-foro <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Cursor en Procedimiento plpgsql
Date: 2006-01-19 15:29:48
Message-ID: fa2b6e3a0601190729k3f58fb6bq@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Gracias Jaime:

Si había estado revisando el link que me dices, pero:

No entiendo como creo el cursor, ¿Como indico los campos que va a tener ?
¿Como agrego registros ?
y ¿Como llamo desde PHP a esa funcion ?

Deseo hacer algo as, Desde PHP enviar una consulta como esta:

select * from dependencia where depe_id IN (select myfuncion())

¿Es posible ?. Espero puedas darme una idea

Gracias

El día 19/01/06, Jaime Casanova <systemguards(at)gmail(dot)com> escribió:
>
> On 1/19/06, Luis Guevara <luis(dot)a(dot)guevara(at)gmail(dot)com> wrote:
> > Hola Amigos:
> >
> > Quiero crear un procedimiento plpgsql que contenga lo siguiente:
> >
> > 1.- Crear un cursor o tabla temporal
> > 2.- Agregar registros a ese cursor
> > 3.- Devolver el cursor.
> >
> > ¿Es posible eso? ¿Pueden darme alguna idea ?
> >
> > Gracias
> >
> >
> >
> > --
> > atte.
> > Luis Guevara
>
> si... aqui tienes algunos ejemplos...
>
> http://www.postgresql.org/docs/current/static/plpgsql-cursors.html#PLPGSQL-CURSOR-USING
>
> --
> Atentamente,
> Jaime Casanova
> (DBA: DataBase Aniquilator ;)
>

--
atte.
Luis Guevara


From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: Luis Guevara <luis(dot)a(dot)guevara(at)gmail(dot)com>
Cc: Jaime Casanova <systemguards(at)gmail(dot)com>, PostgreSQL-foro <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Cursor en Procedimiento plpgsql
Date: 2006-01-19 15:58:43
Message-ID: 20060119155843.GA28011@surnet.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Luis Guevara escribió:
> Gracias Jaime:
>
> Si había estado revisando el link que me dices, pero:
>
> No entiendo como creo el cursor, ¿Como indico los campos que va a tener ?
> ¿Como agrego registros ?
> y ¿Como llamo desde PHP a esa funcion ?
>
> Deseo hacer algo as, Desde PHP enviar una consulta como esta:
>
> select * from dependencia where depe_id IN (select myfuncion())
>
> ¿Es posible ?. Espero puedas darme una idea

Que se supone que hace myfuncion()?

--
Alvaro Herrera Valdivia, Chile ICBM: S 39º 49' 17.7", W 73º 14' 26.8"
"I personally became interested in Linux while I was dating an English major
who wouldn't know an operating system if it walked up and bit him."
(Val Henson)


From: Jaime Casanova <systemguards(at)gmail(dot)com>
To: Luis Guevara <luis(dot)a(dot)guevara(at)gmail(dot)com>
Cc: PostgreSQL-foro <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Cursor en Procedimiento plpgsql
Date: 2006-01-19 16:05:27
Message-ID: c2d9e70e0601190805v34690492jaf6bf679c327c8c8@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

On 1/19/06, Luis Guevara <luis(dot)a(dot)guevara(at)gmail(dot)com> wrote:
> Gracias Jaime:
>
> Si había estado revisando el link que me dices, pero:
>
> No entiendo como creo el cursor, ¿Como indico los campos que va a tener ?
> ¿Como agrego registros ?
> y ¿Como llamo desde PHP a esa funcion ?
>
> Deseo hacer algo as, Desde PHP enviar una consulta como esta:
>
> select * from dependencia where depe_id IN (select myfuncion())
>

de todas formas la llamada esta mal hecha, deberia ser:

select * from dependencia where depe_id IN (select campo from myfuncion())

> ¿Es posible ?. Espero puedas darme una idea
>
> Gracias
>
>

es posible... pero para que? todo lo que necesitas es, en el peor de
los casos, una funcion que retorne un conjunto de registros...

dinos que tratas de hacer haber si vemos como facilitar las cosas...

--
Atentamente,
Jaime Casanova
(DBA: DataBase Aniquilator ;)


From: Luis Guevara <luis(dot)a(dot)guevara(at)gmail(dot)com>
To: Luis Guevara <luis(dot)a(dot)guevara(at)gmail(dot)com>, Jaime Casanova <systemguards(at)gmail(dot)com>, PostgreSQL-foro <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Cursor en Procedimiento plpgsql
Date: 2006-01-19 16:05:33
Message-ID: fa2b6e3a0601190805n431f0268x@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

En myfuncion() deseo crear un cursor o tabla temporal y agregar registros a
ese cursor, de tal manera que la funcion me devuelva el cursor creado. ¿Es
posible hacerlo?

Gracias

El día 19/01/06, Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org> escribió:
>
> Luis Guevara escribió:
> > Gracias Jaime:
> >
> > Si había estado revisando el link que me dices, pero:
> >
> > No entiendo como creo el cursor, ¿Como indico los campos que va a tener
> ?
> > ¿Como agrego registros ?
> > y ¿Como llamo desde PHP a esa funcion ?
> >
> > Deseo hacer algo as, Desde PHP enviar una consulta como esta:
> >
> > select * from dependencia where depe_id IN (select myfuncion())
> >
> > ¿Es posible ?. Espero puedas darme una idea
>
> Que se supone que hace myfuncion()?
>
> --
> Alvaro Herrera Valdivia, Chile ICBM: S 39º 49' 17.7", W 73º 14'
> 26.8"
> "I personally became interested in Linux while I was dating an English
> major
> who wouldn't know an operating system if it walked up and bit him."
> (Val Henson)
>

--
atte.
Luis Guevara


From: Luis Guevara <luis(dot)a(dot)guevara(at)gmail(dot)com>
To: Jaime Casanova <systemguards(at)gmail(dot)com>
Cc: PostgreSQL-foro <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Cursor en Procedimiento plpgsql
Date: 2006-01-19 16:15:58
Message-ID: fa2b6e3a0601190815s4e68f02eo@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Ok. necesito una funcion que retorne un conjunto de registros (que es un
cursor),
Pero ese conjunto de registros deseo agregarlos con comandos INSERT en base
a consultas de otras tablas.

Es decir algo así:

CREATE FUNCTION myfuncion()
.....
CREATE TABLE mycursor (codigo integer) -----> pero que sea una tabla
temporal o un cursor
INSERT INTO mycursor VALUES(1)
INSERT INTO mycursor VALUES(2)
RETURN mycursor
...
LANGUAGE 'plpgsql'

El día 19/01/06, Jaime Casanova <systemguards(at)gmail(dot)com> escribió:
>
> On 1/19/06, Luis Guevara <luis(dot)a(dot)guevara(at)gmail(dot)com> wrote:
> > Gracias Jaime:
> >
> > Si había estado revisando el link que me dices, pero:
> >
> > No entiendo como creo el cursor, ¿Como indico los campos que va a tener
> ?
> > ¿Como agrego registros ?
> > y ¿Como llamo desde PHP a esa funcion ?
> >
> > Deseo hacer algo as, Desde PHP enviar una consulta como esta:
> >
> > select * from dependencia where depe_id IN (select myfuncion())
> >
>
> de todas formas la llamada esta mal hecha, deberia ser:
>
> select * from dependencia where depe_id IN (select campo from myfuncion())
>
> > ¿Es posible ?. Espero puedas darme una idea
> >
> > Gracias
> >
> >
>
> es posible... pero para que? todo lo que necesitas es, en el peor de
> los casos, una funcion que retorne un conjunto de registros...
>
> dinos que tratas de hacer haber si vemos como facilitar las cosas...
>
> --
> Atentamente,
> Jaime Casanova
> (DBA: DataBase Aniquilator ;)
>

--
atte.
Luis Guevara


From: Jaime Casanova <systemguards(at)gmail(dot)com>
To: Luis Guevara <luis(dot)a(dot)guevara(at)gmail(dot)com>
Cc: PostgreSQL-foro <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Cursor en Procedimiento plpgsql
Date: 2006-01-19 16:21:34
Message-ID: c2d9e70e0601190821i663d44d9kb05ee361b901a951@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

On 1/19/06, Luis Guevara <luis(dot)a(dot)guevara(at)gmail(dot)com> wrote:
> Ok. necesito una funcion que retorne un conjunto de registros (que es un
> cursor),
> Pero ese conjunto de registros deseo agregarlos con comandos INSERT en base
> a consultas de otras tablas.
>
> Es decir algo así:
>
> CREATE FUNCTION myfuncion()
> .....
> CREATE TABLE mycursor (codigo integer) -----> pero que sea una tabla
> temporal o un cursor
> INSERT INTO mycursor VALUES(1)
> INSERT INTO mycursor VALUES(2)
> RETURN mycursor
> ...
> LANGUAGE 'plpgsql'
>

quiza algo como?

CREATE FUNCTION myfuncion() RETURNS SETOF record as $$
SELECT 1 UNION SELECT 2 [UNION < TODAS LAS CONSULTAS QUE
QUIERAS HACER > ];
END;
$$ LANGUAGE sql;

o si la consulta que vas a hacer es de una sola tabla, entonces seria:

CREATE FUNCTION myfuncion() RETURNS SETOF tabla as $$
SELECT * FROM tabla;
END;
$$ LANGUAGE sql;

--
Atentamente,
Jaime Casanova
(DBA: DataBase Aniquilator ;)


From: Luis Guevara <luis(dot)a(dot)guevara(at)gmail(dot)com>
To: Jaime Casanova <systemguards(at)gmail(dot)com>
Cc: PostgreSQL-foro <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Cursor en Procedimiento plpgsql
Date: 2006-01-19 16:28:06
Message-ID: fa2b6e3a0601190828n4442f607q@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Ok. Pero el cursor que deso devolver va a ser llenado en base a comandos
INSERT y no con otras consultas.

Mi problema es como crear el cursor y como insertar registros en el.

Gracias Jaime

El día 19/01/06, Jaime Casanova <systemguards(at)gmail(dot)com> escribió:
>
> On 1/19/06, Luis Guevara <luis(dot)a(dot)guevara(at)gmail(dot)com> wrote:
> > Ok. necesito una funcion que retorne un conjunto de registros (que es un
> > cursor),
> > Pero ese conjunto de registros deseo agregarlos con comandos INSERT en
> base
> > a consultas de otras tablas.
> >
> > Es decir algo así:
> >
> > CREATE FUNCTION myfuncion()
> > .....
> > CREATE TABLE mycursor (codigo integer) -----> pero que sea una
> tabla
> > temporal o un cursor
> > INSERT INTO mycursor VALUES(1)
> > INSERT INTO mycursor VALUES(2)
> > RETURN mycursor
> > ...
> > LANGUAGE 'plpgsql'
> >
>
> quiza algo como?
>
> CREATE FUNCTION myfuncion() RETURNS SETOF record as $$
> SELECT 1 UNION SELECT 2 [UNION < TODAS LAS CONSULTAS QUE
> QUIERAS HACER > ];
> END;
> $$ LANGUAGE sql;
>
> o si la consulta que vas a hacer es de una sola tabla, entonces seria:
>
> CREATE FUNCTION myfuncion() RETURNS SETOF tabla as $$
> SELECT * FROM tabla;
> END;
> $$ LANGUAGE sql;
>
> --
> Atentamente,
> Jaime Casanova
> (DBA: DataBase Aniquilator ;)
>

--
atte.
Luis Guevara


From: Jaime Casanova <systemguards(at)gmail(dot)com>
To: Luis Guevara <luis(dot)a(dot)guevara(at)gmail(dot)com>
Cc: PostgreSQL-foro <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Cursor en Procedimiento plpgsql
Date: 2006-01-19 18:15:54
Message-ID: c2d9e70e0601191015v1ddae4fbh4590fda5f070ea6@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

On 1/19/06, Luis Guevara <luis(dot)a(dot)guevara(at)gmail(dot)com> wrote:
> Ok. Pero el cursor que deso devolver va a ser llenado en base a comandos
> INSERT y no con otras consultas.
>
> Mi problema es como crear el cursor y como insertar registros en el.
>
> Gracias Jaime
>

un cursor se crea en base a una consulta... no ingresas registros en el...
en todo caso una tabla temporal es lo que necesitarias...

pero insisto en que estas manejando esto de forma incorrecta:
por ejemplo: en que se basan los inserts? datos que salen de una
tabla? parametros que envia el usuario?

--
Atentamente,
Jaime Casanova
(DBA: DataBase Aniquilator ;)


From: Luis Guevara <luis(dot)a(dot)guevara(at)gmail(dot)com>
To: Jaime Casanova <systemguards(at)gmail(dot)com>
Cc: PostgreSQL-foro <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Cursor en Procedimiento plpgsql
Date: 2006-01-19 19:12:36
Message-ID: fa2b6e3a0601191112r5c483708v@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

ok. entiendo, entonces debo trabajar con una tabla temporal, en la cual
pueda efectuar INSERT.

O en todo caso, si tengo la siguiente tabla Dependencia:

depe_id Descipcion Depende
1 AAAAA Null
2 bbbbbb Null
3 xxxxxx Null
4 yyyyyyyy 2
5 zzzzzzz 4

Quiero crear un procedimiento al cual le envíe como parámetro el depe_id y
me devuelva todos los registros que
dependen de ese depe_id. Por ejm si llamo a la función así:
select * from myfuncion(2)
que me devuelva el siguiente cursor:

depe_id Descipcion Depende
2 bbbbbb Null
4 yyyyyyyy 2
5 zzzzzzz 4

Gracias Jaime por tu ayuda

atte.
Luis Guevara

El día 19/01/06, Jaime Casanova <systemguards(at)gmail(dot)com> escribió:
>
> On 1/19/06, Luis Guevara <luis(dot)a(dot)guevara(at)gmail(dot)com> wrote:
> > Ok. Pero el cursor que deso devolver va a ser llenado en base a comandos
> > INSERT y no con otras consultas.
> >
> > Mi problema es como crear el cursor y como insertar registros en el.
> >
> > Gracias Jaime
> >
>
> un cursor se crea en base a una consulta... no ingresas registros en el...
> en todo caso una tabla temporal es lo que necesitarias...
>
> pero insisto en que estas manejando esto de forma incorrecta:
> por ejemplo: en que se basan los inserts? datos que salen de una
> tabla? parametros que envia el usuario?
>
> --
> Atentamente,
> Jaime Casanova
> (DBA: DataBase Aniquilator ;)
>

--
atte.
Luis Guevara