Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Bloco BEGIN END com com várias instruções n


Sandro2011

Pergunta

Saudações galera,

Estou com dificuldades para criar uma sequencia de instruções simples no mysql. Estou tentando fazer um bloco Begin-End em que a primeira parte apaga os registros dentro da tabela e a segunda inclui os novos registros, mas está ocorrendo um erro #1064 que não consigo solucionar.

DELIMITER $$ 
 BEGIN 
   delete from tbl_relacao where cod_produto_final=3;
   insert into tbl_relacao (cod_produto_final,cod_pecas,quantidade,id) values (3,1,505,1),(3,3,5005,1),(3,13,55,1); 
 END$$ 
DELIMITER;

o erro que dá é:

#1064 - 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 'delete from tbl_relacao where cod_produto_final=3;
' at line 2

Qualquer ajuda é bem vinda!

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Boa noite Denis, obrigado pela ajuda!

Realmente o uso do Stored Procedure foi a solução.

A possibilidade de administrar melhor os possiveis erros no BD me levaram a tentar blocos de instruções.

Assim como no PHP, eu pensei que era possível simplesmente colocar varias queries dentro de um bloco BEGIN-END.

O problema foi resolvido com o Stored Procedure.

Eu estava precisando fazer umas queries dinâmicas dentro do bloco de instruções, e estava fazendo via PHP, que eu domino mais :P.

Mas eu resolvi o problema também com uso de 'Prepared Statment'.

Meu codigo final ficou assim

delimiter $$
CREATE PROCEDURE atualiza_pecas (IN valores TEXT, IN codigo_parte INT)
   BEGIN 	
	delete from tbl_relacao where cod_produto_final_partes=codigo_parte;
	SET @query = CONCAT('insert into tbl_relacao (cod_produto_final_partes,cod_almox_pecas,quantidade,id) values ',valores);
	PREPARE insere_dados FROM @query;
	EXECUTE insere_dados;
   END$$
delimiter;

Que eu chamo agora atraves de um 'call'

call atualiza_pecas_projeto( '(4,1,70,1), (4,5,200,1), (4,90,70,1) ', 4 )

Com PHP eu colocava uma insert com várias values seguidas. Mas eu tinha de fazer o 'delete' antes e depois o 'insert' dos registros.

Obs. Pode fechar o tópico, o problema foi resolvido.

Editado por Sandro2011
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...