# DROP_ROUTINE - remove a routine - man(7) - [phpMan]

_DROP_ [_ROUTINE_(7)](https://www.chedong.com/phpMan.php/man/ROUTINE/7/markdown)                    PostgreSQL 16.14 Documentation                    _DROP_ [_ROUTINE_(7)](https://www.chedong.com/phpMan.php/man/ROUTINE/7/markdown)

## NAME
       DROP_ROUTINE - remove a routine

## SYNOPSIS
       DROP ROUTINE [ IF EXISTS ] _name_ [ ( [ [ _argmode_ ] [ _argname_ ] _argtype_ [, ...] ] ) ] [, ...]
           [ CASCADE | RESTRICT ]

## DESCRIPTION
       **DROP ROUTINE **removes the definition of one or more existing routines. The term “routine”
       includes aggregate functions, normal functions, and procedures. See under DROP AGGREGATE
       ([**DROP_AGGREGATE**(7)](https://www.chedong.com/phpMan.php/man/DROPAGGREGATE/7/markdown)), DROP FUNCTION ([**DROP_FUNCTION**(7)](https://www.chedong.com/phpMan.php/man/DROPFUNCTION/7/markdown)), and DROP PROCEDURE ([**DROP_PROCEDURE**(7)](https://www.chedong.com/phpMan.php/man/DROPPROCEDURE/7/markdown))
       for the description of the parameters, more examples, and further details.

## NOTES
       The lookup rules used by **DROP ROUTINE **are fundamentally the same as for **DROP PROCEDURE**; in
       particular, **DROP ROUTINE **shares that command's behavior of considering an argument list that
       has no _argmode_ markers to be possibly using the SQL standard's definition that OUT arguments
       are included in the list. (**DROP AGGREGATE **and **DROP FUNCTION **do not do that.)

       In some cases where the same name is shared by routines of different kinds, it is possible
       for **DROP ROUTINE **to fail with an ambiguity error when a more specific command (**DROP FUNCTION**,
       etc.) would work. Specifying the argument type list more carefully will also resolve such
       problems.

       These lookup rules are also used by other commands that act on existing routines, such as
       **ALTER ROUTINE **and **COMMENT ON ROUTINE**.

## EXAMPLES
       To drop the routine foo for type integer:

           DROP ROUTINE foo(integer);

       This command will work independent of whether foo is an aggregate, function, or procedure.

## COMPATIBILITY
       This command conforms to the SQL standard, with these PostgreSQL extensions:

       •   The standard only allows one routine to be dropped per command.

       •   The IF EXISTS option is an extension.

       •   The ability to specify argument modes and names is an extension, and the lookup rules
           differ when modes are given.

       •   User-definable aggregate functions are an extension.

## SEE ALSO
       DROP AGGREGATE ([**DROP_AGGREGATE**(7)](https://www.chedong.com/phpMan.php/man/DROPAGGREGATE/7/markdown)), DROP FUNCTION ([**DROP_FUNCTION**(7)](https://www.chedong.com/phpMan.php/man/DROPFUNCTION/7/markdown)), DROP PROCEDURE
       ([**DROP_PROCEDURE**(7)](https://www.chedong.com/phpMan.php/man/DROPPROCEDURE/7/markdown)), ALTER ROUTINE ([**ALTER_ROUTINE**(7)](https://www.chedong.com/phpMan.php/man/ALTERROUTINE/7/markdown))

       Note that there is no CREATE ROUTINE command.

PostgreSQL 16.14                                2026                                 _DROP_ [_ROUTINE_(7)](https://www.chedong.com/phpMan.php/man/ROUTINE/7/markdown)
