# DROP_ROUTINE(7) - man - phpMan

DROP [ROUTINE(7)](https://www.chedong.com/phpMan.php/man/ROUTINE/7/markdown)                    PostgreSQL 14.23 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/AGGREGATE/7/markdown)), DROP FUNCTION (**DROP**___**[FUNCTION**(7)](https://www.chedong.com/phpMan.php/man/FUNCTION/7/markdown)), and DROP PROCEDURE (**DROP**___**[PROCEDURE**(7)](https://www.chedong.com/phpMan.php/man/PROCEDURE/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/AGGREGATE/7/markdown)), DROP FUNCTION (**DROP**___**[FUNCTION**(7)](https://www.chedong.com/phpMan.php/man/FUNCTION/7/markdown)), DROP PROCEDURE
       (**DROP**___**[PROCEDURE**(7)](https://www.chedong.com/phpMan.php/man/PROCEDURE/7/markdown)), ALTER ROUTINE (**ALTER**___**[ROUTINE**(7)](https://www.chedong.com/phpMan.php/man/ROUTINE/7/markdown))

       Note that there is no CREATE ROUTINE command.



PostgreSQL 14.23                                2026                                 DROP [ROUTINE(7)](https://www.chedong.com/phpMan.php/man/ROUTINE/7/markdown)
