{"Entry":{"collection":"sql","key":"drop-function","name":"DROP FUNCTION","aliases":["dropfunction"],"metadata":{"aliases":["dropfunction"],"changed_in":["7.3","8.1","8.2","10"],"changes":[{"from":"6.5","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["description","compatibility"],"removed":["bugs"]},"status":"changed","synopsis":null,"to":"7.0"},{"from":"7.0","purpose_changed":false,"renamed":{"from_file":"sql-dropfunction.htm","to_file":"sql-dropfunction.html"},"sections":{"added":[],"changed":["compatibility"],"removed":[]},"status":"changed","synopsis":null,"to":"7.1"},{"from":"7.1","purpose_changed":true,"renamed":null,"sections":{"added":["notes","examples","see_also"],"changed":["description","compatibility"],"removed":["usage"]},"status":"changed","synopsis":null,"to":"7.2"},{"from":"7.2","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["notes","compatibility"],"removed":[]},"status":"changed","synopsis":{"added":["DROP FUNCTION name ( [ type [, ...] ] ) [ CASCADE | RESTRICT ]"],"removed":[]},"to":"7.3"},{"from":"7.3","purpose_changed":true,"renamed":null,"sections":{"added":["parameters"],"changed":["description","compatibility","see_also"],"removed":["notes"]},"status":"changed","synopsis":null,"to":"7.4"},{"from":"8.0","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["parameters"],"removed":[]},"status":"changed","synopsis":{"added":["DROP FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )"],"removed":["DROP FUNCTION name ( [ type [, ...] ] ) [ CASCADE | RESTRICT ]"]},"to":"8.1"},{"from":"8.1","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["parameters"],"removed":[]},"status":"changed","synopsis":{"added":["DROP FUNCTION [ IF EXISTS ] name ( [ [ argmode ] [ argname ] argtype [, ...] ] )"],"removed":[]},"to":"8.2"},{"from":"8.2","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["description"],"removed":[]},"status":"changed","synopsis":null,"to":"8.3"},{"from":"8.3","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["parameters"],"removed":[]},"status":"changed","synopsis":null,"to":"8.4"},{"from":"9.5","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["parameters"],"removed":[]},"status":"changed","synopsis":null,"to":"9.6"},{"from":"9.6","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["parameters","examples","compatibility"],"removed":[]},"status":"changed","synopsis":{"added":["DROP FUNCTION [ IF EXISTS ] name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] [, ...]"],"removed":[]},"to":"10"},{"from":"10","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["see_also"],"removed":[]},"status":"changed","synopsis":null,"to":"11"},{"from":"11","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["parameters"],"removed":[]},"status":"changed","synopsis":null,"to":"12"},{"from":"16","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["parameters"],"removed":[]},"status":"changed","synopsis":null,"to":"17"},{"from":"18","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["parameters"],"removed":[]},"status":"changed","synopsis":null,"to":"19"}],"content_hash":"ec2a9ed6752525eaf220f2b97be1d13b0489872e71894fd08f50291771247f95","editorial":{},"first_version":"6.4","group":"routine","imported_at":"2026-09-30T17:43:37.21532+08:00","last_version":"20","name":"DROP FUNCTION","object":"FUNCTION","position":2007,"present_in":["6.4","6.5","7.0","7.1","7.2","7.3","7.4","8.0","8.1","8.2","8.3","8.4","9.0","9.1","9.2","9.3","9.4","9.5","9.6","10","11","12","13","14","15","16","17","18","19","20"],"purpose":"remove a function","purpose_zh":"","related":["create-function","alter-function","drop-procedure","drop-routine"],"slug":"drop-function","source_rev":"a709ab85","synopsis":"DROP FUNCTION [ IF EXISTS ] name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] [, ...]\n[ CASCADE | RESTRICT ]","verb":"DROP"}},"Definition":{"Collection":"sql","Key":"drop-function","SourceDatabase":"center","Version":"18","SourceTable":"sqlcmd","SourceKey":"drop-function","SourceRevision":"a709ab85","Facts":{"anchor":"SQL-DROPFUNCTION","file":"sql-dropfunction.html","lang":"en","name":"DROP FUNCTION","purpose":"remove a function","purpose_zh":"","related":["create-function","alter-function","drop-procedure","drop-routine"],"sections":[{"html":"\u003cp\u003e\u003ccode class=\"command\"\u003eDROP FUNCTION\u003c/code\u003e removes the definition of an existing function. To execute this command the user must be the owner of the function. The argument types to the function must be specified, since several different functions can exist with the same name and different argument lists.\u003c/p\u003e","key":"description","title":"Description"},{"html":"\u003cdiv class=\"variablelist\"\u003e\u003cdl class=\"variablelist\"\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003ccode class=\"literal\"\u003eIF EXISTS\u003c/code\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eDo not throw an error if the function does not exist. A notice is issued in this case.\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eThe name (optionally schema-qualified) of an existing function. If no argument list is specified, the name must be unique in its schema.\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003eargmode\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eThe mode of an argument: \u003ccode class=\"literal\"\u003eIN\u003c/code\u003e, \u003ccode class=\"literal\"\u003eOUT\u003c/code\u003e, \u003ccode class=\"literal\"\u003eINOUT\u003c/code\u003e, or \u003ccode class=\"literal\"\u003eVARIADIC\u003c/code\u003e. If omitted, the default is \u003ccode class=\"literal\"\u003eIN\u003c/code\u003e. Note that \u003ccode class=\"command\"\u003eDROP FUNCTION\u003c/code\u003e does not actually pay any attention to \u003ccode class=\"literal\"\u003eOUT\u003c/code\u003e arguments, since only the input arguments are needed to determine the function's identity. So it is sufficient to list the \u003ccode class=\"literal\"\u003eIN\u003c/code\u003e, \u003ccode class=\"literal\"\u003eINOUT\u003c/code\u003e, and \u003ccode class=\"literal\"\u003eVARIADIC\u003c/code\u003e arguments.\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003eargname\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eThe name of an argument. Note that \u003ccode class=\"command\"\u003eDROP FUNCTION\u003c/code\u003e does not actually pay any attention to argument names, since only the argument data types are needed to determine the function's identity.\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003eargtype\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eThe data type(s) of the function's arguments (optionally schema-qualified), if any.\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003ccode class=\"literal\"\u003eCASCADE\u003c/code\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eAutomatically drop objects that depend on the function (such as operators or triggers), and in turn all objects that depend on those objects (see \u003ca href=\"/docs/18/ddl-depend.html\" title=\"5.15. Dependency Tracking\"\u003eSection 5.15\u003c/a\u003e).\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003ccode class=\"literal\"\u003eRESTRICT\u003c/code\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eRefuse to drop the function if any objects depend on it. This is the default.\u003c/p\u003e\u003c/dd\u003e\u003c/dl\u003e\u003c/div\u003e","key":"parameters","title":"Parameters"},{"html":"\u003cp\u003eThis command removes the square root function:\u003c/p\u003e\u003cpre class=\"programlisting\"\u003eDROP FUNCTION sqrt(integer);\n\u003c/pre\u003e\u003cp\u003eDrop multiple functions in one command:\u003c/p\u003e\u003cpre class=\"programlisting\"\u003eDROP FUNCTION sqrt(integer), sqrt(bigint);\n\u003c/pre\u003e\u003cp\u003eIf the function name is unique in its schema, it can be referred to without an argument list:\u003c/p\u003e\u003cpre class=\"programlisting\"\u003eDROP FUNCTION update_employee_salaries;\n\u003c/pre\u003e\u003cp\u003eNote that this is different from\u003c/p\u003e\u003cpre class=\"programlisting\"\u003eDROP FUNCTION update_employee_salaries();\n\u003c/pre\u003e\u003cp\u003ewhich refers to a function with zero arguments, whereas the first variant can refer to a function with any number of arguments, including zero, as long as the name is unique.\u003c/p\u003e","key":"examples","title":"Examples"},{"html":"\u003cp\u003eThis command conforms to the SQL standard, with these \u003cspan class=\"productname\"\u003ePostgreSQL\u003c/span\u003e extensions:\u003c/p\u003e\u003cdiv class=\"itemizedlist\"\u003e\u003cul class=\"itemizedlist\"\u003e\u003cli class=\"listitem\"\u003e\u003cp\u003eThe standard only allows one function to be dropped per command.\u003c/p\u003e\u003c/li\u003e\u003cli class=\"listitem\"\u003e\u003cp\u003eThe \u003ccode class=\"literal\"\u003eIF EXISTS\u003c/code\u003e option\u003c/p\u003e\u003c/li\u003e\u003cli class=\"listitem\"\u003e\u003cp\u003eThe ability to specify argument modes and names\u003c/p\u003e\u003c/li\u003e\u003c/ul\u003e\u003c/div\u003e","key":"compatibility","title":"Compatibility"},{"html":"\u003cspan class=\"simplelist\"\u003e\u003ca href=\"/wiki/sql/create-function/?v=18\" title=\"CREATE FUNCTION\"\u003e\u003cspan class=\"refentrytitle\"\u003eCREATE FUNCTION\u003c/span\u003e\u003c/a\u003e, \u003ca href=\"/wiki/sql/alter-function/?v=18\" title=\"ALTER FUNCTION\"\u003e\u003cspan class=\"refentrytitle\"\u003eALTER FUNCTION\u003c/span\u003e\u003c/a\u003e, \u003ca href=\"/wiki/sql/drop-procedure/?v=18\" title=\"DROP PROCEDURE\"\u003e\u003cspan class=\"refentrytitle\"\u003eDROP PROCEDURE\u003c/span\u003e\u003c/a\u003e, \u003ca href=\"/wiki/sql/drop-routine/?v=18\" title=\"DROP ROUTINE\"\u003e\u003cspan class=\"refentrytitle\"\u003eDROP ROUTINE\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e","key":"see_also","title":"See Also"}],"sections_same_as":"","slug":"18","synopsis_html":"DROP FUNCTION [ IF EXISTS ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e [ ( [ [ \u003cem class=\"replaceable\"\u003e\u003ccode\u003eargmode\u003c/code\u003e\u003c/em\u003e ] [ \u003cem class=\"replaceable\"\u003e\u003ccode\u003eargname\u003c/code\u003e\u003c/em\u003e ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003eargtype\u003c/code\u003e\u003c/em\u003e [, ...] ] ) ] [, ...]\n    [ CASCADE | RESTRICT ]","synopsis_text":"DROP FUNCTION [ IF EXISTS ] name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] [, ...]\n[ CASCADE | RESTRICT ]"},"ManualEvidence":{},"MeasuredEvidence":{}},"Text":{"Collection":"sql","Key":"drop-function","SourceDatabase":"pgweb","Version":"18","Locale":"zh-Hans","Title":"DROP FUNCTION","Summary":"移除一个函数","BodyHTML":"\u003cpre\u003eDROP FUNCTION [ IF EXISTS ] name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] [, ...]\n[ CASCADE | RESTRICT ]\u003c/pre\u003e\u003csection\u003e\u003ch2\u003e描述\u003c/h2\u003e\u003cp\u003e\u003ccode\u003eDROP FUNCTION\u003c/code\u003e移除一个现有函数的定义。要执行此命令，用户必须是该函数的拥有者。必须指定该函数的参数类型，因为可能存在多个名称相同但参数列表不同的函数。\u003c/p\u003e\u003c/section\u003e\u003csection\u003e\u003ch2\u003e参数\u003c/h2\u003e\u003cdiv\u003e\u003cdl\u003e\u003cdt\u003e\u003cspan\u003e\u003ccode\u003eIF EXISTS\u003c/code\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e如果该函数不存在，则不要抛出错误。这种情况下会发出一个提示。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan\u003e\u003cem\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e现有函数的名称（可以用模式限定）。如果没有指定参数列表，这个名称必须在其模式中唯一。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan\u003e\u003cem\u003e\u003ccode\u003eargmode\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e参数的模式：\u003ccode\u003eIN\u003c/code\u003e、\u003ccode\u003eOUT\u003c/code\u003e、\u003ccode\u003eINOUT\u003c/code\u003e或\u003ccode\u003eVARIADIC\u003c/code\u003e。如果省略，默认值为\u003ccode\u003eIN\u003c/code\u003e。注意，\u003ccode\u003eDROP FUNCTION\u003c/code\u003e实际上并不关注\u003ccode\u003eOUT\u003c/code\u003e参数，因为确定函数标识只需要输入参数。因此，只列出 \u003ccode\u003eIN\u003c/code\u003e、\u003ccode\u003eINOUT\u003c/code\u003e和 \u003ccode\u003eVARIADIC\u003c/code\u003e参数就足够了。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan\u003e\u003cem\u003e\u003ccode\u003eargname\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e一个参数的名称。注意，\u003ccode\u003eDROP FUNCTION\u003c/code\u003e 实际上并不关注参数名，因为确定函数标识只需要参数数据类型。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan\u003e\u003cem\u003e\u003ccode\u003eargtype\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e函数参数的数据类型（如果有，可以用模式限定）。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan\u003e\u003ccode\u003eCASCADE\u003c/code\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e自动删除依赖于该函数的对象（例如操作符或触发器），以及进一步依赖于这些对象的所有对象（参见\u003ca href=\"/docs/18/ddl-depend.html\" rel=\"nofollow\"\u003e第 5.15 节\u003c/a\u003e）。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan\u003e\u003ccode\u003eRESTRICT\u003c/code\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e如果有任何对象依赖于该函数，则拒绝删除它。这是默认值。\u003c/p\u003e\u003c/dd\u003e\u003c/dl\u003e\u003c/div\u003e\u003c/section\u003e\u003csection\u003e\u003ch2\u003e示例\u003c/h2\u003e\u003cp\u003e此命令删除平方根函数：\u003c/p\u003e\u003cpre\u003eDROP FUNCTION sqrt(integer);\n\u003c/pre\u003e\u003cp\u003e在一条命令中删除多个函数：\u003c/p\u003e\u003cpre\u003eDROP FUNCTION sqrt(integer), sqrt(bigint);\n\u003c/pre\u003e\u003cp\u003e如果函数名在其模式中是唯一的，就可以在不写参数列表的情况下引用它：\u003c/p\u003e\u003cpre\u003eDROP FUNCTION update_employee_salaries;\n\u003c/pre\u003e\u003cp\u003e注意，这不同于\u003c/p\u003e\u003cpre\u003eDROP FUNCTION update_employee_salaries();\n\u003c/pre\u003e\u003cp\u003e后者引用的是一个零参数函数，而前一种写法在名称唯一时，可以引用任意参数个数的函数，包括零参数函数。\u003c/p\u003e\u003c/section\u003e\u003csection\u003e\u003ch2\u003e兼容性\u003c/h2\u003e\u003cp\u003e此命令符合 SQL 标准，但有以下\u003cspan\u003ePostgreSQL\u003c/span\u003e扩展：\u003c/p\u003e\u003cdiv\u003e\u003cul\u003e\u003cli\u003e\u003cp\u003e标准每条命令只允许删除一个函数。\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003e\u003ccode\u003eIF EXISTS\u003c/code\u003e选项是扩展。\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003e允许指定参数模式和参数名是扩展。\u003c/p\u003e\u003c/li\u003e\u003c/ul\u003e\u003c/div\u003e\u003c/section\u003e\u003csection\u003e\u003ch2\u003e另见\u003c/h2\u003e\u003cspan\u003e\u003ca href=\"/wiki/sql/create-function/?v=18\" title=\"CREATE FUNCTION\" rel=\"nofollow\"\u003e\u003cspan\u003eCREATE FUNCTION\u003c/span\u003e\u003c/a\u003e, \u003ca href=\"/wiki/sql/alter-function/?v=18\" title=\"ALTER FUNCTION\" rel=\"nofollow\"\u003e\u003cspan\u003eALTER FUNCTION\u003c/span\u003e\u003c/a\u003e, \u003ca href=\"/wiki/sql/drop-procedure/?v=18\" title=\"DROP PROCEDURE\" rel=\"nofollow\"\u003e\u003cspan\u003eDROP PROCEDURE\u003c/span\u003e\u003c/a\u003e, \u003ca href=\"/wiki/sql/drop-routine/?v=18\" title=\"DROP ROUTINE\" rel=\"nofollow\"\u003e\u003cspan\u003eDROP ROUTINE\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e\u003c/section\u003e","SourceRevision":"1b5ca64c","ContentHash":"11e9ef3ee2eefa1dbe16ce0e4160bbd2dd4df45965220b8a1139e46b5bd2b8d8","Payload":{"purpose_zh":"移除一个函数","sections":[{"html":"\u003cp\u003e\u003ccode class=\"command\"\u003eDROP FUNCTION\u003c/code\u003e移除一个现有函数的定义。要执行此命令，用户必须是该函数的拥有者。必须指定该函数的参数类型，因为可能存在多个名称相同但参数列表不同的函数。\u003c/p\u003e","key":"description","title":"描述"},{"html":"\u003cdiv class=\"variablelist\"\u003e\u003cdl class=\"variablelist\"\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003ccode class=\"literal\"\u003eIF EXISTS\u003c/code\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e如果该函数不存在，则不要抛出错误。这种情况下会发出一个提示。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e现有函数的名称（可以用模式限定）。如果没有指定参数列表，这个名称必须在其模式中唯一。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003eargmode\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e参数的模式：\u003ccode class=\"literal\"\u003eIN\u003c/code\u003e、\u003ccode class=\"literal\"\u003eOUT\u003c/code\u003e、\u003ccode class=\"literal\"\u003eINOUT\u003c/code\u003e或\u003ccode class=\"literal\"\u003eVARIADIC\u003c/code\u003e。如果省略，默认值为\u003ccode class=\"literal\"\u003eIN\u003c/code\u003e。注意，\u003ccode class=\"command\"\u003eDROP FUNCTION\u003c/code\u003e实际上并不关注\u003ccode class=\"literal\"\u003eOUT\u003c/code\u003e参数，因为确定函数标识只需要输入参数。因此，只列出 \u003ccode class=\"literal\"\u003eIN\u003c/code\u003e、\u003ccode class=\"literal\"\u003eINOUT\u003c/code\u003e和 \u003ccode class=\"literal\"\u003eVARIADIC\u003c/code\u003e参数就足够了。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003eargname\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e一个参数的名称。注意，\u003ccode class=\"command\"\u003eDROP FUNCTION\u003c/code\u003e 实际上并不关注参数名，因为确定函数标识只需要参数数据类型。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003eargtype\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e函数参数的数据类型（如果有，可以用模式限定）。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003ccode class=\"literal\"\u003eCASCADE\u003c/code\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e自动删除依赖于该函数的对象（例如操作符或触发器），以及进一步依赖于这些对象的所有对象（参见\u003ca href=\"/docs/18/ddl-depend.html\" title=\"5.15. 依赖跟踪\"\u003e第 5.15 节\u003c/a\u003e）。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003ccode class=\"literal\"\u003eRESTRICT\u003c/code\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e如果有任何对象依赖于该函数，则拒绝删除它。这是默认值。\u003c/p\u003e\u003c/dd\u003e\u003c/dl\u003e\u003c/div\u003e","key":"parameters","title":"参数"},{"html":"\u003cp\u003e此命令删除平方根函数：\u003c/p\u003e\u003cpre class=\"programlisting\"\u003eDROP FUNCTION sqrt(integer);\n\u003c/pre\u003e\u003cp\u003e在一条命令中删除多个函数：\u003c/p\u003e\u003cpre class=\"programlisting\"\u003eDROP FUNCTION sqrt(integer), sqrt(bigint);\n\u003c/pre\u003e\u003cp\u003e如果函数名在其模式中是唯一的，就可以在不写参数列表的情况下引用它：\u003c/p\u003e\u003cpre class=\"programlisting\"\u003eDROP FUNCTION update_employee_salaries;\n\u003c/pre\u003e\u003cp\u003e注意，这不同于\u003c/p\u003e\u003cpre class=\"programlisting\"\u003eDROP FUNCTION update_employee_salaries();\n\u003c/pre\u003e\u003cp\u003e后者引用的是一个零参数函数，而前一种写法在名称唯一时，可以引用任意参数个数的函数，包括零参数函数。\u003c/p\u003e","key":"examples","title":"示例"},{"html":"\u003cp\u003e此命令符合 SQL 标准，但有以下\u003cspan class=\"productname\"\u003ePostgreSQL\u003c/span\u003e扩展：\u003c/p\u003e\u003cdiv class=\"itemizedlist\"\u003e\u003cul class=\"itemizedlist\"\u003e\u003cli class=\"listitem\"\u003e\u003cp\u003e标准每条命令只允许删除一个函数。\u003c/p\u003e\u003c/li\u003e\u003cli class=\"listitem\"\u003e\u003cp\u003e\u003ccode class=\"literal\"\u003eIF EXISTS\u003c/code\u003e选项是扩展。\u003c/p\u003e\u003c/li\u003e\u003cli class=\"listitem\"\u003e\u003cp\u003e允许指定参数模式和参数名是扩展。\u003c/p\u003e\u003c/li\u003e\u003c/ul\u003e\u003c/div\u003e","key":"compatibility","title":"兼容性"},{"html":"\u003cspan class=\"simplelist\"\u003e\u003ca href=\"/wiki/sql/create-function/?v=18\" title=\"CREATE FUNCTION\"\u003e\u003cspan class=\"refentrytitle\"\u003eCREATE FUNCTION\u003c/span\u003e\u003c/a\u003e, \u003ca href=\"/wiki/sql/alter-function/?v=18\" title=\"ALTER FUNCTION\"\u003e\u003cspan class=\"refentrytitle\"\u003eALTER FUNCTION\u003c/span\u003e\u003c/a\u003e, \u003ca href=\"/wiki/sql/drop-procedure/?v=18\" title=\"DROP PROCEDURE\"\u003e\u003cspan class=\"refentrytitle\"\u003eDROP PROCEDURE\u003c/span\u003e\u003c/a\u003e, \u003ca href=\"/wiki/sql/drop-routine/?v=18\" title=\"DROP ROUTINE\"\u003e\u003cspan class=\"refentrytitle\"\u003eDROP ROUTINE\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e","key":"see_also","title":"另见"}],"sections_same_as":"","synopsis_html":"DROP FUNCTION [ IF EXISTS ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e [ ( [ [ \u003cem class=\"replaceable\"\u003e\u003ccode\u003eargmode\u003c/code\u003e\u003c/em\u003e ] [ \u003cem class=\"replaceable\"\u003e\u003ccode\u003eargname\u003c/code\u003e\u003c/em\u003e ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003eargtype\u003c/code\u003e\u003c/em\u003e [, ...] ] ) ] [, ...]\n    [ CASCADE | RESTRICT ]","synopsis_text":"DROP FUNCTION [ IF EXISTS ] name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] [, ...]\n[ CASCADE | RESTRICT ]"}},"RequestedLocale":"zh-Hans","Fallback":false,"Versions":["10","11","12","13","14","15","16","17","18","19","20","6.4","6.5","7.0","7.1","7.2","7.3","7.4","8.0","8.1","8.2","8.3","8.4","9.0","9.1","9.2","9.3","9.4","9.5","9.6"],"Locales":["en","zh-Hans"],"Signatures":null,"Spellings":null,"SQLState":null,"Evidence":null}
