> 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/prepared-statements/execute-statement.md).

# EXECUTE Statement

Run a previously prepared statement. This command executes the statement using the specified name, optionally supplying input parameters.

## Syntax

```bnf
EXECUTE [LOCAL] stmt_name
    [USING expression[, expression] ...]
```

## Description

After preparing a statement with [PREPARE](/docs/server/reference/sql-statements/prepared-statements/prepare-statement.md), you execute it with an`EXECUTE` statement that refers to the prepared statement name. If the prepared statement contains any parameter markers, you must supply a`USING` clause that lists expressions containing the values to be bound to the parameters. The `USING` clause must name exactly as many expressions as the number of parameter markers in the statement.

You can execute a given prepared statement multiple times, passing different variables to it or setting the variables to different values before each execution.

If the specified statement has not been PREPAREd, an error similar to the following is produced:

```sql
ERROR 1243 (HY000): Unknown prepared statement handler (stmt_name) given to EXECUTE
```

{% tabs %}
{% tab title="Current" %}
`EXECUTE` with arbitrary expression as parameters can be used, not just user variables (@var\_name).
{% endtab %}

{% tab title="< 10.2.3" %}
You can only use user variables (@var\_name) as parameters.
{% endtab %}
{% endtabs %}

### LOCAL Statement Names

{% hint style="info" %}
`EXECUTE LOCAL` is available from MariaDB 13.1.1.
{% endhint %}

Inside a stored procedure, `EXECUTE LOCAL spvar` executes the prepared statement whose name is the *value* of the stored-procedure variable `spvar`, rather than a literal name. A `USING` clause is supported as usual. `EXECUTE LOCAL` is only valid inside a stored procedure, and like the plain form is not permitted in stored functions or triggers.

**Example:**

```sql
CREATE PROCEDURE p1()
BEGIN
  DECLARE spvar_with_ps_name VARCHAR(64) DEFAULT 'my_stmt';
  DECLARE a INT DEFAULT 5;

  PREPARE my_stmt FROM 'SELECT ?';
  EXECUTE LOCAL spvar_with_ps_name USING a;
END;
```

## Example

See [example in PREPARE](/docs/server/reference/sql-statements/prepared-statements/prepare-statement.md#example).

## See Also

* [EXECUTE IMMEDIATE](/docs/server/reference/sql-statements/prepared-statements/execute-immediate.md)

<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" %}
