[Lazarus-es] Problema con Zeos e PostgreSQL en versión de Lazarus 2.00

Iván Mesa iv.mesa.prg en gmail.com
Vie Abr 5 17:57:45 CEST 2019


Prueba a usar los bloques en postgres:
Do $$
Declare
//aquí pones variables si necesitas
Begin
//aquí los comandos.
End;
$$
Mira este link: https://www.postgresql.org/docs/9.0/sql-do.html

Un abrazo.
iDesk

Enviado desde Correo para Windows 10

De: Alfonso Arias Lemas via Lazarus-es
Enviado: viernes, 5 de abril de 2019 15:21
Para: lazarus-es en lists.lazarus-ide.org
CC: Alfonso Arias Lemas
Asunto: Re: [Lazarus-es] Problema con Zeos e PostgreSQL en versión de Lazarus 2.00

Hola José.
Implementé el ejemplo que mandas en

https://stackoverflow.com/questions/16759373/multiple-statements-delphi-tzquery-zeos-error 

y continua a dar el mismo error, me llamó la atención que es para Delphi pero no se si sería equivalente 100% para Lazarus. A modo de ejemplo use la misma query mostrada en el Email enviado por mi que podría ser un procedimiento almacenado sin duda pero para ejemplificar sirve. 

UPDATE app.a_arbol SET cod='00096',descrip='MTCV' WHERE id=5200; 
UPDATE app.a_pt SET longitud=-23.491440000000,latitud=14.919906000000,control_ip=0,circuito_comando=True,comentario='',
                                    potencianominal=20.0,tipofornecimento=1,estado=True WHERE idarbol=5200;

en este caso yo necesito que si es actualizada una sentencia sea la otra también y si no nada.
    Alfonso Arias Lemas
      Email: alfonsoariaslemas en gmail.com
      Skype: alfonso291104
      Viber: +34 666072614
      WhatsApp: +34 666072614
      Móvel CV: +238 5882123/9578108
 
El 5/4/2019 a las 6:58 AM, José Mejuto via Lazarus-es escribió:
El 04/04/2019 a las 23:46, Alfonso Arias Lemas via Lazarus-es escribió: 


Resalto que esto no sucedía antes. 
Haciendo un /debugger /(depurando el sistema) tomo las sentencias SQL para PostgreSQL que da error desde el sistema y a modo de ejemplo: 

*UPDATE app.a_arbol SET cod='00096',descrip='MTCV' WHERE id=5200; 
UPDATE app.a_pt SET longitud=-23.491440000000,latitud=14.919906000000,control_ip=0,circuito_comando=True,comentario='',
potencianominal=20.0,tipofornecimento=1,estado=True WHERE idarbol=5200; 
* 
las coloco en el analizador de consultas del pgadmin e corren perfectamente mas si ejecuto esta misma sentencia desde el programa me da el error anterior. 

Hola, 

Múltiples sentencias en un único query no se deben de usar, porque si eso es válido, esto también debería serlo y verás que no tiene sentido: 

------- 
SELECT * from TABLENOMBRES; 
SELECT * from TABLECOCHES; 
------- 


Busque en otros forum mas lo unico que sugieren es que realiza las transacciones sentencia por sentencia pero yo necesito que sea univoca y atómica, o sea, todo o nada. 

La transacción es eso, única y atómica. Todas las operaciones hasta que realices el Commit se harán en una sola operación, o el Commit fallará. 



Alguien sabe si para la versión esta de Lazarus 2.00 y Zeos 7.2.4 existe algún parámetro o propiedad nueva que permita hacer/definir transacciones simples o complejas con mas de una sentencia. 

Supongo que estás trabajando en modo "AutoCommit", eso lo que hace es que cada vez que realices una operación se ejecuta un "Commit" oculto. En este ejemplo de stackoverflow te lo muestran con código de ejemplo: 

https://stackoverflow.com/questions/16759373/multiple-statements-delphi-tzquery-zeos-error 

Saludos. 



------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20190405/41cc9984/attachment.html>


Más información sobre la lista de distribución Lazarus-es