> For the complete documentation index, see [llms.txt](https://mariadb.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mariadb.com/docs/server/reference/sql-statements/programmatic-compound-statements/repeat-loop.md).

# REPEAT LOOP

## Syntax

```bnf
[begin_label:] REPEAT
    statement_list
UNTIL search_condition
END REPEAT [end_label]
```

The statement list within a `REPEAT` statement is repeated until the search\_condition is true. Thus, a `REPEAT` always enters the loop at least once. statement\_list consists of one or more statements, each\
terminated by a semicolon (i.e., `;`) statement delimiter.

A `REPEAT` statement can be [labeled](/docs/server/reference/sql-statements/programmatic-compound-statements/labels.md). end\_label cannot be given unless begin\_label is also present. If both are present, they must be the same.

See [Delimiters](/docs/server/clients-and-utilities/mariadb-client/mariadb-command-line-client.md#delimiters) in the [mariadb](/docs/server/clients-and-utilities/mariadb-client.md) client for more on client delimiter usage.

```sql
DELIMITER //

CREATE PROCEDURE dorepeat(p1 INT)
  BEGIN
    SET @x = 0;
    REPEAT SET @x = @x + 1; UNTIL @x > p1 END REPEAT;
  END
//

CALL dorepeat(1000)//

SELECT @x//
+------+
| @x   |
+------+
| 1001 |
+------+
```

<sub>*This page is licensed: GPLv2, originally from*</sub> [<sub>*fill\_help\_tables.sql*</sub>](https://github.com/MariaDB/server/blob/main/scripts/fill_help_tables.sql)

{% @marketo/form formId="4316" %}
