Reserved PL keywords are identifiers that have special meanings. They cannot be used in names of stored procedures, functions, types, or variables. Non-reserved PL keywords can be used as identifiers with no need for quotation marks. The keywords are case-insensitive.
Reserved PL keywords
| Initial letter | Reserved keyword |
|---|---|
| A | ALTER |
| B | BEFORE and BY |
| C | CALL, CASE, CONDITION, CONTINUE, CREATE, CURRENT_USER, CURSOR, and COMMIT |
| D | DECLARE, DEFAULT, DELETE, DETERMINISTIC, DROP, and DO |
| E | EXISTS, ELSE, ELSIF, EXISTS, and EXIT |
| F | FETCH, FOR, and FROM |
| I | IF, IN, INDEX, INDEXES, INOUT, INSERT, and INTO IS ITERATE |
| L | LEAVE, LIMIT, LONG, and LOOP |
| M | MODIFIES |
| N | NOT |
| O | ON, OR, and OUT |
| P | PROCEDURE |
| R | READS, REPEAT, REPLACE, RESIGNAL, and RETURN |
| S | SELECT, SIGNAL, SQL, SQLEXCEPTION, SQLSTATE, and SQLWARNING |
| T | TABLE, THEN, and TRIGGER |
| U | UPDATE, USING, and UNTIL |
| W | WHEN and WHILE |
Non-reserved PL keywords
| Initial letter | Reserved keyword |
|---|---|
| A | AFTER and AUTHID |
| B | BEGIN_KEY, BINARY_INTEGER, and BODY |
| C | C, CATALOG_NAME, CLASS_ORIGIN, CLOSE, COLUMN_NAME, COMMENT, CONSTRAINT_CATALOG, CONSTRAINT_NAME, CONSTRAINT_ORIGIN, CONSTRAINT_SCHEMA, CONTAINS, COUNT, and CURSOR_NAME |
| D | DATA and DEFINER |
| E | END_KEY and EXTEND |
| F | FOUND and FUNCTION |
| H | HANDLER |
| I | INTERFACE and INVOKER |
| J | JSON |
| L | LANGUAGE |
| M | MESSAGE_TEXT and MYSQL_ERRNO |
| N | NEXT and NO |
| O | OF and OPEN |
| P | PACKAGE and PRAGMA |
| R | RECORD, RETURNS, ROW, and ROWTYPE |
| S | SCHEMA_NAME, SECURITY, and SUBCLASS_ORIGIN |
| T | TABLE_NAME and TYPE |
| V | VALUE |