# LOOP

Een herhaling dient, zoals het woord doet veronderstellen, om code of statements een aantal keer achter elkaar uit te voeren.

**Syntax:**

```sql
[loop_benaming:] LOOP
    statement(s)
END LOOP
```

Merk op dat er geen loopconditie aanwezig is. Om de lus te verlaten, schrijf je `LEAVE`, gevolgd door de benaming van de lus die je wil verlaten.

{% hint style="info" %}
Het `LEAVE` commando werkt ook in andere soorten lussen zoals `WHILE` en `REPEAT`
{% endhint %}

Hieronder een simpel voorbeeld van een stored procedure die een getal als parameter heeft en dan de getallen vanaf 1 tot het getal in kwestie in een tekenreeks plaatst en deze toont.

```sql
USE `aptunes`;
DROP procedure IF EXISTS `LoopDemo`;

DELIMITER $$
USE `aptunes`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `LoopDemo`(
    IN numberOfIterations INT
)
BEGIN
    DECLARE i INT DEFAULT 0;
    DECLARE producedText VARCHAR(255) DEFAULT '';
    
    concat_loop:  LOOP
        IF  i < numberOfIterations THEN
			SET i = i + 1;
            SET producedText = CONCAT(producedText, i);
            IF i < numberOfIterations THEN
				SET producedText = CONCAT(producedText, ",");
			END IF;
		ELSE
			LEAVE concat_loop;
		END IF;
    END LOOP;

    SELECT producedText; 
END$$

DELIMITER ;

```

Om deze stored procedure op te roepen, hanteren we volgend statement. Waarbij we in onderstaand geval vragen om 10 cijfers weer te geven.

```sql
CALL LoopDemo(10);
```

Resultaat:

![](https://1425816266-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPNgMN0ewDXfUsv1WOCZN%2Fuploads%2Fgit-blob-37dac288bfef2316309ce42a53a564943785de6d%2Floop.JPG?alt=media)
