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