Es war mal wieder soweit. Mein kürzlich erstelltes Projekt sollte die Daten dann doch in der DB lagern.
Schleifen? Wie ging das noch?

Das folgende Beispiel, was ich finden konnte half mir dann aber wieder auf die Sprünge.
Ich hatte gehofft ein einfaches SQL loop Statment zu schreiben das mein Anliegen dann erledigt aber ich bin nicht fündig geworden. Aber ich hatte ja noch die Möglichkeit die „PROCEDURE“ in der DB zu verwenden.

Aufgabe war ja: Telefonnummern (Zahlen) von n – nnnn… in der DB zu erzeugen und anschliessend in einer anderen Tabelle mit Vorwahlnummer zu Verknüpfen. Die Lösung könnte wie folgt aussehen:

# mit mysql | mariadb verbinden
#sh> mysql -h <hostname> -u <user> <datenbankname> -p
Enter password: 

mysql> DELIMITER $$
mysql>  DROP PROCEDURE IF EXISTS test_while_loop$$
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> CREATE PROCEDURE test_while_loop()
-> BEGIN
->   DECLARE x  INT;
->   SET x = 1;
->   WHILE x  <= 9999 DO
->     INSERT INTO phone_numbers VALUES (x);
->     SET  x = x + 1; 
->   END WHILE;
-> END$$
Query OK, 0 rows affected (0.00 sec) 

mysql> DELIMITER ;

# Schleife aufrufen
mysql> CALL test_while_loop();

Nun werden die Zahlen Stück für Stück in der Tabelle geschrieben.
WICHTIG: Je nach Zahlenbereich kann das locker mehrere Stunden dauern!

Zum Schluss sollte nicht vergessen werden die erstellte PROCEDURE wieder zu löschen:

mysql>  DROP PROCEDURE IF EXISTS test_while_loop

Ursprungs Thema

Handy Nummern aller deutschen Netze generieren

Weiterführende Themen

mysqltutorial.org