
The following table lists all of the [basic PL/pgSQL executable statements](../../../../../syntax_resources/grammar_diagrams/#plpgsql-basic-stmt).
- The _Statement Name_ column links to the page where the semantics are described.
- The _Syntax rule name_ column links to the definition on the omnibus [Grammar Diagrams](../../../../../syntax_resources/grammar_diagrams/) reference page.

| STATEMENT NAME                                                                                                             | SYNTAX RULE NAME                                                                                                               | COMMENT                                                                                                 |
| -------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------- |
| ["assert" statement](./assert/)                                                                                            | [plpgsql_assert_stmt](../../../../../syntax_resources/grammar_diagrams/#plpgsql-assert-stmt)                                   | abort the current server call if the assertion tests "false"                                            |
| "assign" statement                                                                                                         | [plpgsql_assignment_stmt](../../../../../syntax_resources/grammar_diagrams/#plpgsql-assignment-stmt)                           | e.g. "a := b + c;" and "v := (select count(*) from s.t)". No further explanation is needed.             |
| [Bare SQL statement](./doing-sql-from-plpgsql/#the-bare-sql-statement)                                                     | [plpgsql_static_bare_sql_stmt](../../../../../syntax_resources/grammar_diagrams/#plpgsql-static-bare-sql-stmt)                 | ANY embedded SQL statement (including DDL, etc) that doesn't return values                              |
| ["close" statement](./cursor-manipulation/#plpgsql-close-cursor-stmt)                                                      | [plpgsql_close_cursor_stmt](../../../../../syntax_resources/grammar_diagrams/#plpgsql-close-cursor-stmt)                       | close a cursor (using "refcursor" variable)                                                             |
| ["continue" statement](../compound-statements/loop-exit-continue/#continue-statement)                                      | [plpgsql_continue_stmt](../../../../../syntax_resources/grammar_diagrams/#plpgsql-continue-stmt)                               | start the next iteration of a loop (or enclosing loop)                                                  |
| ["execute" statement](./doing-sql-from-plpgsql/#the-execute-statement)                                                     | [plpgsql_dynamic_sql_stmt](../../../../../syntax_resources/grammar_diagrams/#plpgsql-dynamic-sql-stmt)                         | execute a dynamic SQL statement, optionally with "into" clause for returned values                      |
| ["exit" statement](../compound-statements/loop-exit-continue/#exit-statement)                                              | [plpgsql_exit_stmt](../../../../../syntax_resources/grammar_diagrams/#plpgsql-exit-stmt)                                       | exit from a loop (or enclosing loop)                                                                    |
| ["fetch" statement](../compound-statements/loop-exit-continue/infinite-and-while-loops/#infinite-loop-over-cursor-results) | [plpgsql_fetch_from_cursor_stmt](../../../../../syntax_resources/grammar_diagrams/#plpgsql-fetch-from-cursor-stmt)             | fetch from a cursor (using "refcursor" variable)                                                        |
| ["get diagnostics" statement](./get-diagnostics/)                                                                          | [plpgsql_get_diagnostics_stmt](../../../../../syntax_resources/grammar_diagrams/#plpgsql-get-diagnostics-stmt)                 | get diagnostic info about the most-recently-executed SQL statement                                      |
| ["get stacked diagnostics" statement](../../exception-section/#how-to-get-information-about-the-error)                     | [plpgsql_get_stacked_diagnostics_stmt](../../../../../syntax_resources/grammar_diagrams/#plpgsql-get-stacked-diagnostics-stmt) | get diagnostic info about the exception that brought the point of execution to the present handler      |
| ["insert, update, delete into" statement](./doing-sql-from-plpgsql/#the-insert-update-delete-into-statement)               | [plpgsql_static_dml_returning_stmt](../../../../../syntax_resources/grammar_diagrams/#plpgsql-static-dml-returning-stmt)       | embedded "insert", "update", or "delete" statement with "into" clause for returned values               |
| "move" statement                                                                                                           | [plpgsql_move_in_cursor_stmt](../../../../../syntax_resources/grammar_diagrams/#plpgsql-move-in-cursor-stmt)                   | move in cursor — not yet supported, see [Beware Issue #6514](../../../../../cursors/#beware-issue-6514) |
| ["open" statement](./cursor-manipulation/#plpgsql-open-cursor-stmt)                                                        | [plpgsql_open_cursor_stmt](../../../../../syntax_resources/grammar_diagrams/#plpgsql-open-cursor-stmt)                         | open a cursor (using "refcursor" variable)                                                              |
| ["perform" statement](./doing-sql-from-plpgsql/#the-perform-statement)                                                     | [plpgsql_perform_stmt](../../../../../syntax_resources/grammar_diagrams/#plpgsql-perform-stmt)                                 | execute a "select" statement without returning rows                                                     |
| ["raise" statement](./raise/)                                                                                              | [plpgsql_raise_stmt](../../../../../syntax_resources/grammar_diagrams/#plpgsql-raise-stmt)                                     | "raise info" or... "warning" or... "exception"                                                          |
| ["return" statement](./return-statement/#semantics)                                                                        | [plpgsql_return_stmt](../../../../../syntax_resources/grammar_diagrams/#plpgsql-return-stmt)                                   | exit from subprogram to caller, optionally returning value(s)                                           |
| ["select into" statement](./doing-sql-from-plpgsql/#the-select-into-statement)                                             | [plpgsql_static_select_into_stmt](../../../../../syntax_resources/grammar_diagrams/#plpgsql-static-select-into-stmt)           | embedded single-row "select" with "into" clause for returned values                                     |
