Ask a Question
Report a Bug
This page in other versions:
Warning: This documentation is for a pre-release version of pgAdmin 4
Use the Procedure dialog to create a procedure; procedures are supported by
PostgreSQL v11+ and EDB Postgres Advanced Server. The Procedure dialog allows
you to implement options of the CREATE PROCEDURE command.
The Procedure dialog organizes the development of a procedure through the
following dialog tabs: General, Definition, Options, Arguments,
Parameters, and Security. The SQL tab displays the SQL code generated by
Use the fields in the General tab to identify a procedure:
Click the Definition tab to continue.
Use the fields in the Definition tab to define the procedure:
Click the Options tab to continue.
Use the fields in the Options tab to describe or modify the behavior of the
Use the drop-down listbox under Volatility to select one of the following.
VOLATILE is the default value.
VOLATILE indicates that the value can change even within a single table
scan, so no optimizations can be made.
STABLE indicates that the procedure cannot modify the database, and that
within a single table scan it will consistently return the same result for
the same argument values, but that its result could change across SQL
IMMUTABLE indicates that the procedure cannot modify the database and
always returns the same result when given the same argument values.
Move the Strict? switch to indicate if the procedure always returns NULL
whenever any of its arguments are NULL. If Yes, the procedure is not
executed when there are NULL arguments; instead a NULL result is assumed
automatically. The default is No.
Move the Security of definer? switch to specify that the procedure is to be
executed with the privileges of the user that created it. The default is No.
Use the Estimated cost field to specify a positive number representing the
estimated execution cost for the procedure, in units of cpu_operator_cost. If
the procedure returns a set, this is the cost per returned row.
Move the Leak proof? switch to indicate whether the procedure has side
effects — it reveals no information about its arguments other than by its
return value. The default is No.
Click the Arguments tab to continue.
Use the fields in the Arguments tab to define an argument. Click Add to set
parameters and values for the argument:
Click Add to define another argument; to discard an argument, click the trash
icon to the left of the row and confirm deletion in the Delete Row popup.
Click the Parameters tab to continue.
Use the fields in the Parameters tab to specify settings that will be applied
when the procedure is invoked:
Click the Security tab to continue.
Use the Security tab to assign privileges and define security labels.
Use the Privileges panel to assign execute privileges for the procedure to a
Click Add to assign additional privileges; to discard a privilege, click the
trash icon to the left of the row and confirm deletion in the Delete Row
Use the Security Labels panel to define security labels applied to the
procedure. Click Add to add each security label selection:
Click Add to assign additional security labels; to discard a security label,
click the trash icon to the left of the row and confirm deletion in the Delete
Click the SQL tab to continue.
Your entries in the Procedure dialog generate a SQL command (see an example
below). Use the SQL tab for review; revisit or switch tabs to make any changes
to the SQL command.
The following is an example of the sql command generated by selections made in
the Procedure dialog:
The example demonstrates creating a procedure that returns a list of employees
from a table named emp. The procedure is a SECURITY DEFINER, and will execute
with the privileges of the role that defined the procedure.