Fórum TZQuery com multiplos comandos SQL #375419
29/09/2009
0
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
Curtir tópico
+ 0Posts
30/09/2009
Djfabioninja
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
Gostei + 0
01/10/2009
Max-rs
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.
Gostei + 0
01/10/2009
Afarias
Vc deve executar um comando de cada vez ou -- se disponível -- usar um componente de Script.
T+
Gostei + 0
06/10/2009
Moura
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.
Gostei + 0
06/10/2009
Moura
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)