Ir ao conteúdo
  • Cadastre-se
paulinho2mg

loop mysql

Recommended Posts

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!

Compartilhar este post


Link para o post
Compartilhar em outros sites

me diz uma coisa... 

 

qual a real necessidade de fazer desse método?  não considerou a possibilidade de fazer isso na linguagem de programação quando for inserir uma tupla?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
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;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×