Ir ao conteúdo
  • Cadastre-se

loop mysql


paulinho2mg

Posts recomendados

Boa noite!

 

estou precisando inserir varias tuplas "parecidas" em uma tabela, li que no mysql também pode-se usar loops, pesquisei algumas coisas, tentei executar, porém tem algo errado! quando eu escrevo a query me aparece um erro de sintaxe, não sei se tem algo faltando, ou se está errado mesmo!

 

por eu está testando e aprendendo ao mesmo tempo! segue o trecho que implementei...

DECLARE @coroa INT:=1WHILE @coroa != 0(INSERT INTO `Atenda`.`ITENS` (`idITEM`, `TIPO_ITENS_idTIPO`, `tamanhoITEM`, `statusLOCACAO`, `statusESTADO`) VALUES ((SELECT MAX(idITEM) FROM Atenda.ITENS)+1, (select idTIPO from Atenda.TIPO_ITENS WHERE nomeTIPO="COROA"), 3, 1, 0)SET @coroa = @coroa - 1)END WHILE;DECLARE @lona INT = 1WHILE @lona != 0(INSERT INTO `Atenda`.`ITENS` (`idITEM`, `TIPO_ITENS_idTIPO`, `tamanhoITEM`, `statusLOCACAO`, `statusESTADO`) VALUES ((SELECT MAX(idITEM) FROM Atenda.ITENS)+1, (select idTIPO from Atenda.TIPO_ITENS WHERE nomeTIPO="LONA"), 3, 1, 0)SET @lona = @lona - 1)END WHILE;DECLARE @canto INT = 4WHILE @canto != 0(INSERT INTO `Atenda`.`ITENS` (`idITEM`, `TIPO_ITENS_idTIPO`, `tamanhoITEM`, `statusLOCACAO`, `statusESTADO`) VALUES ((SELECT MAX(idITEM) FROM Atenda.ITENS)+1, (select idTIPO from Atenda.TIPO_ITENS WHERE nomeTIPO="CANTO"), 3, 1, 0)SET @canto = @canto - 1)END WHILE;DECLARE @copinho INT = 4WHILE @copinho != 0(INSERT INTO `Atenda`.`ITENS` (`idITEM`, `TIPO_ITENS_idTIPO`, `tamanhoITEM`, `statusLOCACAO`, `statusESTADO`) VALUES ((SELECT MAX(idITEM) FROM Atenda.ITENS)+1, (select idTIPO from Atenda.TIPO_ITENS WHERE nomeTIPO="COPINHO"), 3, 1, 0)SET @copinho = @copinho - 1)END WHILE;DECLARE @[member=pes] INT = 4WHILE @[member=pes] != 0(INSERT INTO `Atenda`.`ITENS` (`idITEM`, `TIPO_ITENS_idTIPO`, `tamanhoITEM`, `statusLOCACAO`, `statusESTADO`) VALUES ((SELECT MAX(idITEM) FROM Atenda.ITENS)+1, (select idTIPO from Atenda.TIPO_ITENS WHERE nomeTIPO="PES"), 3, 1, 0)SET @[member=pes] = @[member=pes] - 1)END WHILE;

no workbench já acusa erro logo no DECLARE

 

Alguém pode me dar uma força

 

obrigado!

Link para o comentário
Compartilhar em outros sites

  • Moderador

Até tem..  acredito que esteja faltando o begin e o end ali   e a logica da instrução sql dentro..  bem.. eu não tenho muito conhecimento sobre essa parte de store procedures no mysql. mas tem um usuário aqui que é fera. aguarde até ele aparecer por aqui... enquanto isso..  dê uma olhada no último post deste: http://stackoverflow.com/questions/12627735/mysql-loop-and-insert

Link para o comentário
Compartilhar em outros sites

Olá Paulo HEnrique.

 

Loops você só pode fazer em Stored Procedure/Functions/Triggers, como o DIF comentou.

 

A sintaxe de um trecho seu, de forma correta, ficaria:

 

DECLARE @[member=pes] INT = 4; WHILE (@[member=pes] != 0) DO   BEGIN      INSERT INTO `Atenda`.`ITENS` (`idITEM`, `TIPO_ITENS_idTIPO`, `tamanhoITEM`, `statusLOCACAO`, `statusESTADO`)       VALUES ((SELECT MAX(idITEM) FROM Atenda.ITENS)+1, (select idTIPO from Atenda.TIPO_ITENS WHERE nomeTIPO="PES"), 3, 1, 0)            SET @[member=pes] := @[member=pes] - 1;   END;END WHILE;
Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...