Fórum TZQuery com multiplos comandos SQL #375419

29/09/2009

0

Olá amigos;

Estou com um problema estranho.

Tenho uma TZquery no meu programa, sempre que eu executo apenas um comando SQL por vez funciona perfeitamente.

Mas quando eu adiciono vários comandos SQL e tento executar o MySQL indica que há erro de sintaxe no SQL, porém executanto exatamente o mesmo SQL pelo phpMyAdmin funciona perfeitamente.

Por exemplo o código abaixo:

tzquery.SQL.Clear;
tzquery.SQL.Add(´SELECT * FROM compras WHERE idCompras = 1;´);
tzquery.SQL.Add(´UPDATE compras SET valorFinal = valorFinal + 10 WHERE idCompras = 1´);

tzquery.ExecSQL;


Gera esse erro:
SQL Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ´UPDATE compras SET valorFinal = valorFinal + 10 WHERE idCompras = 1´ at line 2

Não consigo executar transações no mysql por causa deste erro, nunca consigo executar mais de um comando SQL a cada tzquery.ExecSQL / tzquery.Open.

Alguém sabe qual o problema ou o que eu estou fazendo errado?

Obrigado a todos.


Max-rs

Max-rs

Responder

Posts

30/09/2009

Djfabioninja

Fala Max, blz?

Rapaiz, há tempos não uso zQuery mas dá uma confirmada:
´...WHERE idCompras = 1;´);´ ---- existe mesmo o ponto e virgula logo após o numero 1? Acredito que seja isso...

Espero ter ajudado.
Qualquer coisa, msn: djfabioninja@hotmail.com


Responder

Gostei + 0

01/10/2009

Max-rs

Olá djfabioninja;

Obrigado pela resposta.

Sim tem aquele ´;´ depois do 1. Indica para o mysql que terminou a primeira instrução SQL.

Mas eu testei sem o ponto e virgula só para ver o que acontecia e o erro persistiu.

Valeu.


Responder

Gostei + 0

01/10/2009

Afarias

Não uso ZEOS mas tudo indica q, como é comum entre os diversos componentes de acesso a db, o componente Query não permite a execução de multiplos comandos.

Vc deve executar um comando de cada vez ou -- se disponível -- usar um componente de Script.


T+


Responder

Gostei + 0

06/10/2009

Moura

Olá Max!
Eu ultilizo componente ZEOS há alguns anos. Excelente componente.
No entanto percebo que você tenta executar um SELECT para depois fazer um UPDATE.
Não é necessário fazer um SELECT para uma ação de UPDATE.

A propria clausula WHERE que coloca no UPDATE já faz tudo sem precisar de SELECT (isso é uma regra mundial no padrão SQL).

Então, faça da seguinte forma:

tzquery.SQL.Clear; 
tzquery.SQL.Add(´UPDATE compras SET valorFinal = valorFinal + 10 WHERE idCompras = 1´); 
tzquery.ExecSQL;


Teste e informe-nos se conseguiu.

 


Responder

Gostei + 0

06/10/2009

Moura

Ah, outra dica, para multiplos comandos SQL utilize o componente [b:2bc11104ee]TZSQLProcessor[/b:2bc11104ee].

 


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar