The following table lists all of the basic PL/pgSQL executable statements.
- 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 reference page.
| STATEMENT NAME | SYNTAX RULE NAME | COMMENT |
|---|---|---|
| "assert" statement | plpgsql_assert_stmt | abort the current server call if the assertion tests "false" |
| "assign" statement | plpgsql_assignment_stmt | e.g. "a := b + c;" and "v := (select count(*) from s.t)". No further explanation is needed. |
| Bare SQL statement | plpgsql_static_bare_sql_stmt | ANY embedded SQL statement (including DDL, etc) that doesn't return values |
| "close" statement | plpgsql_close_cursor_stmt | close a cursor (using "refcursor" variable) |
| "continue" statement | plpgsql_continue_stmt | start the next iteration of a loop (or enclosing loop) |
| "execute" statement | plpgsql_dynamic_sql_stmt | execute a dynamic SQL statement, optionally with "into" clause for returned values |
| "exit" statement | plpgsql_exit_stmt | exit from a loop (or enclosing loop) |
| "fetch" statement | plpgsql_fetch_from_cursor_stmt | fetch from a cursor (using "refcursor" variable) |
| "get diagnostics" statement | plpgsql_get_diagnostics_stmt | get diagnostic info about the most-recently-executed SQL statement |
| "get stacked diagnostics" statement | 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 | plpgsql_static_dml_returning_stmt | embedded "insert", "update", or "delete" statement with "into" clause for returned values |
| "move" statement | plpgsql_move_in_cursor_stmt | move in cursor — not yet supported, see Beware Issue #6514 |
| "open" statement | plpgsql_open_cursor_stmt | open a cursor (using "refcursor" variable) |
| "perform" statement | plpgsql_perform_stmt | execute a "select" statement without returning rows |
| "raise" statement | plpgsql_raise_stmt | "raise info" or... "warning" or... "exception" |
| "return" statement | plpgsql_return_stmt | exit from subprogram to caller, optionally returning value(s) |
| "select into" statement | plpgsql_static_select_into_stmt | embedded single-row "select" with "into" clause for returned values |