DO WHILE Insert Anweisung

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • DO WHILE Insert Anweisung

    Hallo an die Runde,

    Ich möchte gerne 1000 Datensätze generieren die einen Variablen wert haben welcher fortlaufend ist.

    Bisher hab ich das immer umständlich über eine INSERT / SELECT Anweisung gemacht.

    In der Mysql DOKU bin ich aber auf die DO While Prozedur gestoßen nur leider bekommen ich das nicht gebacken .
    MySQL :: MySQL 5.1 Referenzhandbuch :: 19.2.10.7 WHILE-Anweisung

    Mein Query:
    PHP-Code:
    CREATE PROCEDURE gen()
    BEGIN
    DECLARE vars1 INT DEFAULT 5;
    SET vars1 1000;
    WHILE 
    vars1 <= 2000 DO
    INSERT test_tbl set textinhalt CONCAT ('TEST'vars1);
    SET vars1 vars1 1;
    END WHILE;
    END 
    Fehler:
    SQL-Befehl:

    CREATE PROCEDURE gen( ) BEGIN DECLARE vars1 INT DEFAULT 5;

    Könntet ihr mit das weiterhelfen hab mir auch schon Beispiele in der Doku angesehen die sind genau so aufgebaut?!

    Grüße

  • #2
    Hallo,

    hast du evtl. vergessen, den Delimiter zu ändern?

    Code:
    delimiter |
    CREATE PROCEDURE gen()
    BEGIN
    DECLARE vars1 INT DEFAULT 5;
    SET vars1 = 1000;
    WHILE vars1 <= 2000 DO
    INSERT test_tbl set textinhalt = CONCAT ('TEST', vars1);
    SET vars1 = vars1 + 1;
    END WHILE;
    END|
    delimiter ;
    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Muss man diesen Neu setzen kenn mich hier leider noch nicht so aus,
      hab dein Query mal kopiert kommt leider immer noch der gleich Fehler oder
      wie muss ich den Delimiter neu setzen?

      Liegt ja anscheinend an der Variablen Deklaration...

      Kommentar


      • #4
        Wie setzt du die Statements denn ab? Auf der MySQL-Konsole, mit PHP oder mit PHPMyAdmin?
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          mit PHPMyAdmin

          *join*

          also hab ihn auf "|" geändert und hat er nun auch ausgeführt nur leider nix in meine Tabelle geschrieben .

          Muss ich die erzeugte Prozedur erst noch aufrufen?
          Zuletzt geändert von AmicaNoctis; 21.06.2010, 12:09. Grund: Doppelposting

          Kommentar


          • #6
            Dann nimm einfach nochmal deinen Code, füge den im SQL-Tab ein und ändere unter der Eingabebox den Begrenzer auf „|“ (vertical bar).

            Edit:
            Zitat von tomtherock
            Muss ich die erzeugte Prozedur erst noch aufrufen?
            Aber natürlich.
            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
            Super, danke!
            [/COLOR]

            Kommentar


            • #7
              ah ich habs...

              "CALL gen()"

              hat funktioniert...man ich Anfänger danke für den Tipp!

              Könnte man diese do While auch ohne eine Prozedur zur erzeugen direkt ausführen lassen oder muss man die vorher erzeugen?

              Kommentar


              • #8
                Soweit ich weiß, gibt es diese Sprachkonstrukte nur für und im Zusammenhang mit gespeicherten Prozeduren, Funktionen und Triggern.

                Also kannst du While nicht alleinstehend benutzen.
                [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                Super, danke!
                [/COLOR]

                Kommentar


                • #9
                  Mal so rein der Neugierde halber ...

                  warum gehst du nicht mit

                  Code:
                  CREATE TABLE test (
                  varwert int not null auto_increment [primary key]
                  ); 
                  ALTER TABLE test SET auto_increment= #Startwert;
                  und dann in php

                  [PHP]
                  // mit offener DB-Connection in $connection
                  for ($i=0;$i<Anzahl;$i++) {
                  $sql="INSERT into test () VALUES ()";
                  mysql_query($sql, $connection);
                  }
                  [PHP]

                  dann funzt das auch, wenn du mal keine MySQL 5.x -DB vorfindest
                  Zuletzt geändert von eagle275; 21.06.2010, 19:32.
                  [font=Verdana]
                  Wer LESEN kann, ist klar im Vorteil!
                  [/font]

                  Kommentar


                  • #10
                    ja mit php is easy klar, aber ich will bei mehreren 100.000 Inserts nur ungern den Compiler Vergewaltingen

                    Zudem will ich mein wissen bei SQL weiter ausbauen ist halt schneller ne SQL Frage einfach auszuführen als erstmal wieder ein Script anzupassen etc...

                    Aber trotzdem danke für den Vorschlag.

                    Grüße
                    Tom

                    Kommentar

                    Lädt...
                    X