ALTER FUNCTION (SQL)

Alters a user-defined SQL function.

Syntax

ALTER FUNCTION [[db-name.]schema.]function‑name( [arg‑list] ) {
    OWNER TO new‑owner
    | RENAME TO new‑name
    | SET SCHEMA new‑schema
}

Parameters

[db-name.]schema

Specifies a schema, by default public. If schema is any schema other than public, you must supply the schema name. For example:

myschema.thisDbObject

If you specify a database, it must be the current database.

function‑name

The name of the SQL function to alter.

arg‑list A comma-delimited list of function argument names. If none, specify an empty list.
OWNER TO new‑owner Transfers function ownership to another user.
RENAME TO new‑name

Renames this function.

SET SCHEMA new‑schema

Moves the function to another schema.

Privileges

Non-superuser: USAGE on the schema and one of the following:

  • Function owner
  • ALTER privilege on the function

For certain operations, non-superusers must also have the following schema privileges:

For these operations… Schema privileges required…
RENAME TO (rename function) CREATE, USAGE
SET SCHEMA (move function to another schema)

CREATE: destination schema
USAGE: current schema

Examples

Rename function SQL_one to SQL_two:

=> ALTER FUNCTION SQL_one (int, int) RENAME TO SQL_two;

Move function SQL_two to schema macros:

=> ALTER FUNCTION SQL_two (int, int) SET SCHEMA macros;

Reassign ownership of SQL_two:

=> ALTER FUNCTION SQL_two (int, int) OWNER TO user1;