From: | "Emiliano Moscato" <moski666(at)gmail(dot)com> |
---|---|
To: | pgsql-es-ayuda(at)postgresql(dot)org |
Cc: | "a(dot)long(dot)way(dot)to(dot)the(dot)top(at)gmail(dot)com" <a(dot)long(dot)way(dot)to(dot)the(dot)top(at)gmail(dot)com> |
Subject: | Re: Ayuda con stored procedures en C |
Date: | 2008-05-14 14:23:26 |
Message-ID: | 4388f4180805140723re59362eh4fb1535e87bafd65@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Hola de nuevo!!
Luego del impulso que nos dio Alvaro con la documentacion de SPI avanzamos
un monton. Estamos manejando cursores, estamos haciendo las consultas,
mergeando tablas antes de devolverlas, etc. Peeeero...
Estamos teniendo un nuevo problemita:
Desde un stored procedure estamos haciendo secuencialmente lo siguiente:
- Creamos una tabla temporal.
- Insertamos en la tabla temporal rows que sacamos de otra (usando un
stored procedure).
- Después leemos dicha tabla temporal para mostrar los rows en pantalla.
Y lo que debería traernos los rows de la tabla temporal, no hace más que
decirnos que la tabla está vacía. Si después hacemos una consulta sobre la
misma tabla, nos muestra los datos insertados correctamente.
Nos da la sensación de que el select final se está ejecutando antes que el
insert, a pesar de ser llamados secuencialmente. Llegamos a esta conclusión
porque también probamos de usar una tabla no temporal donde insertar los
datos, y nos mostraba la información que había antes de la inserción.
También probamos de hacer un begin y un comit encerrando los primeros dos
pasos, pero no cambió el problema.
Revisando en la documentación de SPI encontramos la siguiente línea en el
detalle de spi_execute:
*
It is generally unwise to mix read-only and read-write commands within a
single function using SPI; that could result in very confusing behavior,
since the read-only queries would not see the results of any database
updates done by the read-write queries.*
Pero nosotros necesitaríamos hacer esto mismo que está desaconsejado :'(
Alguna idea?
Gracias totales.
Saldudos cordiales
Emiliano
El día 25 de abril de 2008 16:37, Emiliano Moscato <moski666(at)gmail(dot)com>
escribió:
> En el fragor del trabajo se me había olvidado agradecerte :)
> Me fueron muy utiles los links, no lo había visto en la documentación de
> Postgres porque está separado de lo que es Stored Procedures en C (Cap 39
> creo recordar).
> Gracias, los seguiré molestando en breve :)
> Saludos
>
> Emiliano
>
> 2008/4/24 Alvaro Herrera <alvherre(at)commandprompt(dot)com>:
>
> Emiliano Moscato escribió:
>> > Hola,
>> >
>> > Estoy empezando a hacer unas cositas con stored procedures escritos en
>> C. Si
>> > bien voy a hacer algunas cosas complejas, estoy tratando de entender
>> como
>> > usarlo. Los ejemplos que llevo encontrados hacen o un sencillo "hello
>> world"
>> > o "add_one" o van directamente a un "crosstab" que hace cosas demasiado
>> > complicadas para el nivel en el que estoy hoy por hoy, lo que hace q me
>> > cueste bastante entender como se hace algo relativamente simple: una
>> función
>> > "query()" que reciba un string, lo ejecute asumiendo que es un query SQL
>> y
>> > devuelva el resultado.
>>
>> Mira la documentacion de SPI_exec aca:
>>
>> http://www.postgresql.org/docs/8.3/static/spi-spi-exec.html
>>
>> Aca hay un ejemplo
>>
>> http://www.postgresql.org/docs/8.3/static/spi-examples.html
>>
>> --
>> Alvaro Herrera
>> http://www.CommandPrompt.com/
>> The PostgreSQL Company - Command Prompt, Inc.
>> --
>> TIP 1: para suscribirte y desuscribirte, visita
>> http://archives.postgresql.org/pgsql-es-ayuda
>>
>
>
>
> --
> mOsKi
> "No hay nada que uno haga mal , lo que hay es poco vino." Autor Anonimo
>
--
mOsKi
"No hay nada que uno haga mal , lo que hay es poco vino." Autor Anonimo
From | Date | Subject | |
---|---|---|---|
Next Message | Marco Antonio Frias Butron | 2008-05-14 14:26:23 | Re: tipo de dato autoincremental |
Previous Message | william diaz | 2008-05-14 13:37:05 | Re: tipo de dato autoincremental |