summaryrefslogtreecommitdiffstats
path: root/doc/src/sgml/man7/ALTER_PROCEDURE.7
diff options
context:
space:
mode:
Diffstat (limited to 'doc/src/sgml/man7/ALTER_PROCEDURE.7')
-rw-r--r--doc/src/sgml/man7/ALTER_PROCEDURE.7263
1 files changed, 263 insertions, 0 deletions
diff --git a/doc/src/sgml/man7/ALTER_PROCEDURE.7 b/doc/src/sgml/man7/ALTER_PROCEDURE.7
new file mode 100644
index 0000000..0ea7ffa
--- /dev/null
+++ b/doc/src/sgml/man7/ALTER_PROCEDURE.7
@@ -0,0 +1,263 @@
+'\" t
+.\" Title: ALTER PROCEDURE
+.\" Author: The PostgreSQL Global Development Group
+.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
+.\" Date: 2023
+.\" Manual: PostgreSQL 15.4 Documentation
+.\" Source: PostgreSQL 15.4
+.\" Language: English
+.\"
+.TH "ALTER PROCEDURE" "7" "2023" "PostgreSQL 15.4" "PostgreSQL 15.4 Documentation"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+ALTER_PROCEDURE \- change the definition of a procedure
+.SH "SYNOPSIS"
+.sp
+.nf
+ALTER PROCEDURE \fIname\fR [ ( [ [ \fIargmode\fR ] [ \fIargname\fR ] \fIargtype\fR [, \&.\&.\&.] ] ) ]
+ \fIaction\fR [ \&.\&.\&. ] [ RESTRICT ]
+ALTER PROCEDURE \fIname\fR [ ( [ [ \fIargmode\fR ] [ \fIargname\fR ] \fIargtype\fR [, \&.\&.\&.] ] ) ]
+ RENAME TO \fInew_name\fR
+ALTER PROCEDURE \fIname\fR [ ( [ [ \fIargmode\fR ] [ \fIargname\fR ] \fIargtype\fR [, \&.\&.\&.] ] ) ]
+ OWNER TO { \fInew_owner\fR | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
+ALTER PROCEDURE \fIname\fR [ ( [ [ \fIargmode\fR ] [ \fIargname\fR ] \fIargtype\fR [, \&.\&.\&.] ] ) ]
+ SET SCHEMA \fInew_schema\fR
+ALTER PROCEDURE \fIname\fR [ ( [ [ \fIargmode\fR ] [ \fIargname\fR ] \fIargtype\fR [, \&.\&.\&.] ] ) ]
+ [ NO ] DEPENDS ON EXTENSION \fIextension_name\fR
+
+where \fIaction\fR is one of:
+
+ [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER
+ SET \fIconfiguration_parameter\fR { TO | = } { \fIvalue\fR | DEFAULT }
+ SET \fIconfiguration_parameter\fR FROM CURRENT
+ RESET \fIconfiguration_parameter\fR
+ RESET ALL
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBALTER PROCEDURE\fR
+changes the definition of a procedure\&.
+.PP
+You must own the procedure to use
+\fBALTER PROCEDURE\fR\&. To change a procedure\*(Aqs schema, you must also have
+CREATE
+privilege on the new schema\&. To alter the owner, you must also be a direct or indirect member of the new owning role, and that role must have
+CREATE
+privilege on the procedure\*(Aqs schema\&. (These restrictions enforce that altering the owner doesn\*(Aqt do anything you couldn\*(Aqt do by dropping and recreating the procedure\&. However, a superuser can alter ownership of any procedure anyway\&.)
+.SH "PARAMETERS"
+.PP
+\fIname\fR
+.RS 4
+The name (optionally schema\-qualified) of an existing procedure\&. If no argument list is specified, the name must be unique in its schema\&.
+.RE
+.PP
+\fIargmode\fR
+.RS 4
+The mode of an argument:
+IN,
+OUT,
+INOUT, or
+VARIADIC\&. If omitted, the default is
+IN\&.
+.RE
+.PP
+\fIargname\fR
+.RS 4
+The name of an argument\&. Note that
+\fBALTER PROCEDURE\fR
+does not actually pay any attention to argument names, since only the argument data types are used to determine the procedure\*(Aqs identity\&.
+.RE
+.PP
+\fIargtype\fR
+.RS 4
+The data type(s) of the procedure\*(Aqs arguments (optionally schema\-qualified), if any\&. See
+DROP PROCEDURE (\fBDROP_PROCEDURE\fR(7))
+for the details of how the procedure is looked up using the argument data type(s)\&.
+.RE
+.PP
+\fInew_name\fR
+.RS 4
+The new name of the procedure\&.
+.RE
+.PP
+\fInew_owner\fR
+.RS 4
+The new owner of the procedure\&. Note that if the procedure is marked
+SECURITY DEFINER, it will subsequently execute as the new owner\&.
+.RE
+.PP
+\fInew_schema\fR
+.RS 4
+The new schema for the procedure\&.
+.RE
+.PP
+\fIextension_name\fR
+.RS 4
+This form marks the procedure as dependent on the extension, or no longer dependent on the extension if
+NO
+is specified\&. A procedure that\*(Aqs marked as dependent on an extension is dropped when the extension is dropped, even if cascade is not specified\&. A procedure can depend upon multiple extensions, and will be dropped when any one of those extensions is dropped\&.
+.RE
+.PP
+[ EXTERNAL ] SECURITY INVOKER
+.br
+[ EXTERNAL ] SECURITY DEFINER
+.RS 4
+Change whether the procedure is a security definer or not\&. The key word
+EXTERNAL
+is ignored for SQL conformance\&. See
+CREATE PROCEDURE (\fBCREATE_PROCEDURE\fR(7))
+for more information about this capability\&.
+.RE
+.PP
+\fIconfiguration_parameter\fR
+.br
+\fIvalue\fR
+.RS 4
+Add or change the assignment to be made to a configuration parameter when the procedure is called\&. If
+\fIvalue\fR
+is
+DEFAULT
+or, equivalently,
+RESET
+is used, the procedure\-local setting is removed, so that the procedure executes with the value present in its environment\&. Use
+RESET ALL
+to clear all procedure\-local settings\&.
+SET FROM CURRENT
+saves the value of the parameter that is current when
+\fBALTER PROCEDURE\fR
+is executed as the value to be applied when the procedure is entered\&.
+.sp
+See
+\fBSET\fR(7)
+and
+Chapter\ \&20
+for more information about allowed parameter names and values\&.
+.RE
+.PP
+RESTRICT
+.RS 4
+Ignored for conformance with the SQL standard\&.
+.RE
+.SH "EXAMPLES"
+.PP
+To rename the procedure
+insert_data
+with two arguments of type
+integer
+to
+insert_record:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+ALTER PROCEDURE insert_data(integer, integer) RENAME TO insert_record;
+.fi
+.if n \{\
+.RE
+.\}
+.PP
+To change the owner of the procedure
+insert_data
+with two arguments of type
+integer
+to
+joe:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+ALTER PROCEDURE insert_data(integer, integer) OWNER TO joe;
+.fi
+.if n \{\
+.RE
+.\}
+.PP
+To change the schema of the procedure
+insert_data
+with two arguments of type
+integer
+to
+accounting:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+ALTER PROCEDURE insert_data(integer, integer) SET SCHEMA accounting;
+.fi
+.if n \{\
+.RE
+.\}
+.PP
+To mark the procedure
+insert_data(integer, integer)
+as being dependent on the extension
+myext:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+ALTER PROCEDURE insert_data(integer, integer) DEPENDS ON EXTENSION myext;
+.fi
+.if n \{\
+.RE
+.\}
+.PP
+To adjust the search path that is automatically set for a procedure:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+ALTER PROCEDURE check_password(text) SET search_path = admin, pg_temp;
+.fi
+.if n \{\
+.RE
+.\}
+.PP
+To disable automatic setting of
+\fIsearch_path\fR
+for a procedure:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+ALTER PROCEDURE check_password(text) RESET search_path;
+.fi
+.if n \{\
+.RE
+.\}
+.sp
+The procedure will now execute with whatever search path is used by its caller\&.
+.SH "COMPATIBILITY"
+.PP
+This statement is partially compatible with the
+\fBALTER PROCEDURE\fR
+statement in the SQL standard\&. The standard allows more properties of a procedure to be modified, but does not provide the ability to rename a procedure, make a procedure a security definer, attach configuration parameter values to a procedure, or change the owner, schema, or volatility of a procedure\&. The standard also requires the
+RESTRICT
+key word, which is optional in
+PostgreSQL\&.
+.SH "SEE ALSO"
+CREATE PROCEDURE (\fBCREATE_PROCEDURE\fR(7)), DROP PROCEDURE (\fBDROP_PROCEDURE\fR(7)), ALTER FUNCTION (\fBALTER_FUNCTION\fR(7)), ALTER ROUTINE (\fBALTER_ROUTINE\fR(7))