From: | GABRIEL COLINA <colina_movil(at)yahoo(dot)com> |
---|---|
To: | Alvaro Herrera <alvherre(at)commandprompt(dot)com> |
Cc: | Sergio Vizcaino <SergioV(at)azud(dot)es>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Obtener los primeros registros de una consulta. |
Date: | 2007-02-08 19:29:33 |
Message-ID: | 771440.27992.qm@web34706.mail.mud.yahoo.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Bueno, me contestaste muy claramente y me voy a poner a experimentar con el tema.
Con respecto a la pregunta 2
"No entendi esta pregunta. ¿Tiene que ver con los cursores? ¿A qué le
quieres aplicar reglas?"
Tenia que ver con que la view que tiene el limit en este caso yo la uso en una grilla y a travez de una funcion, para actualizarla desde la aplicacion yo cree una regla para insert otra para update y otra para delete, entonces opero con los datos devueltos e inserto nuevos datos a la tabla correspondiente, desde la propia datagrid y sin codificar nada en la api, cosa que con los cursores, pude lograr ver datos, pero no modificar datos.
No se si soy claro.
Si se que lo que me respondiste, me parece muy logico y voy a profundizar mas en el uso de cursores.
Gracias.
Alvaro Herrera <alvherre(at)commandprompt(dot)com> escribió:
GABRIEL COLINA escribió:
> Alvaro, no quiero cuestionarte si no aprender.
> Tu opcion me parece interesante
>
> 1- Al usar un cursor de la forma que propones hay que hacerlo desde una
> funcion no ?
>
> Por que desde la consola me da este error.
>
> DECLARE CURSOR may only be used in transaction blocks
No en una funcion -- en una transaccion. Haz BEGIN y a continuacion el
DECLARE CURSOR. Todos los usos de ese cursor debes hacerlos dentro de
esa transaccion; a menos que declares el cursor WITH HOLD, en cuyo caso
el cursor persistira mas alla de la transaccion, y debes cerrarlo
manualmente en cuanto termines de usarlo.
Obviamente, como una funcion está dentro de una transacción, también se
puede hacer ahí.
> 2 - Si quiero operar un recordset desde una aplicacion a esto puedo
> aplicarle una regla para insert delete y update, como lo hago en una
> consulta ?
No entendi esta pregunta. ¿Tiene que ver con los cursores? ¿A qué le
quieres aplicar reglas?
> 3 - Y ultimo punto
>
> FETCH 50 FROM foo
> muestras esos 50, y despues
> FETCH ALL FROM foo
>
> Hacer esto no es como llamar a dos consultas ?
No, porque hacer dos SELECT significa hacer dos invocaciones al
ejecutor, en cambio si usas un cursor lo que haces es invocar el
ejecutor una vez, lo dejas "congelado" y continuas la ejecucion con cada
FETCH.
--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.
__________________________________________________
Correo Yahoo!
Espacio para todos tus mensajes, antivirus y antispam ¡gratis!
Regístrate ya - http://correo.espanol.yahoo.com/
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2007-02-08 19:33:48 | Re: Obtener los primeros registros de una consulta. |
Previous Message | Oswaldo Hernández | 2007-02-08 18:54:42 | Re: Campo combinado |