Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
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
 

@dif considerei sim! talvez esta nao seja mesmo a solução pra esse problema!

 

mas tem como fazer o loop dentro do banco ne??

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






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

×