1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[SQL] Ciclo com insert into

Discussão em 'Web Development' iniciada por hardmotion, 22 de Maio de 2008. (Respostas: 12; Visualizações: 2451)

  1. hardmotion

    hardmotion Power Member

    Porque razao nao funciona este simples codigo? Dá erro logo na primeira linha...

    Obrigado
     
  2. hostmake

    hostmake Power Member

    Mostra o erro?

    Eu não percebo dessa linguagem, mas não falta um comando de antes de declarares, tipo BEGIN?

    Não faltam ; no fim da linha?
     
  3. Serrot

    Serrot Power Member

    tambem não percebo muito de procedures mas
    acho que é preciso usar um @ antes da variável, tipo o $ no PHP

    Experimenta usar @counter em vez de counter e @data em vez de data.

    Se não resultar , experimenta passar o BEGIN para a 1ª linha...
     
  4. MPalhas

    MPalhas Power Member

    outra coisa, os campos DATE (tanto a variavel data, como o campo dia_mes_ano) por defeito estão no formato aaaa-mm-dd, e tu tens dd-m-aaaa
     
  5. hardmotion

    hardmotion Power Member

    Eu aqui escrevi sem os ; mas no phpmyadmin escrevi direitinho. Já experimentei com a @, ja troquei a data e dá sempre o seguinte erro:
     
  6. hostmake

    hostmake Power Member

    Tu estás a por um Ciclo dentro do SQL do phpmyadmin?

    É que se for isso :-D
     
  7. Serrot

    Serrot Power Member

    Se nem sequer esta instrução funciona é porque provavelmente estás a usar uma
    versão do Mysql que ainda não suporta Stored Procedures.

    O MySql só suporta Stored Procedures a partir da versão 5.0
     
  8. hardmotion

    hardmotion Power Member

    É que se for isso...? Nao entendi, estou a executar comandos SQL no phpmyadmin, porque?
    A versao do SQL é a 5.0.32, por isso deve dar para stored procedures...
     
  9. Serrot

    Serrot Power Member

    Se puderes usar o Mysql Query Browser fazes isso facilmente então.
     
  10. AliFromCairo

    AliFromCairo Power Member

    Tanto o MySQL Query Browser como o phpMyAdmin permitem fazer o que pretendes.
     
  11. hardmotion

    hardmotion Power Member

    Acredito mas continua a nao funcionar e nao entendo porquê...Até ja experimentei com o MySQL Query Browser.
     
  12. Serrot

    Serrot Power Member

    No Mysql Query Browser do lado direito há-de aparecer um Tab Schemata.
    Vai aí à table que queres , clica com o botão direito do rato e escolhe:
    Create New Procedure/Function.
    Aparece uma página já com algum código, algo deste género:

    Código:
     
    
    DELIMITER $$
    
    DROP PROCEDURE IF EXISTS `aTuaDb`.`proc_espectaculos` $$
    CREATE PROCEDURE `aTuaDb`.`proc_espectaculos` ()
    BEGIN
    
    END $$
    
    DELIMITER ;
    
    
    Entre o BEGIN e o END digita o código e há-de ficar algo assim:

    Código:
    
    DELIMITER $$
    
    DROP PROCEDURE IF EXISTS `aTuaDb`.`proc_espectaculos` $$
    CREATE PROCEDURE `aTuaDb`.`proc_espectaculos` ()
    BEGIN
      DECLARE counter INTEGER;
      DECLARE data DATE;
      SET counter =1;
      SET data = '2008-01-01';
    
      WHILE (counter <= 365) DO
      INSERT INTO espectaculos (id_data,dia_mes_ano) VALUES (counter,data);
      SET counter=counter+1;
      SET data=data+ INTERVAL 1 DAY;
      END WHILE;
    END $$
    
    DELIMITER ;
    
    Depois na box onde costumas digitar o SQL é só fazeres:

    CALL aTuaDb.proc_espectaculos();

    e deve funcionar.

    (P.S: aTuaDb é o nome da tua base de dados)
     
  13. hardmotion

    hardmotion Power Member

    Serrot...OBRIGADO! Funcionou!
     

Partilhar esta Página