============== DROP PROCEDURE ============== .. container:: refentry :name: SQL-DROPPROCEDURE .. container:: titlepage .. container:: refnamediv .. rubric:: DROP PROCEDURE :name: drop-procedure DROP PROCEDURE — 移除一个过程 .. container:: refsynopsisdiv .. rubric:: 大纲 :name: 大纲 .. code:: synopsis DROP PROCEDURE [ IF EXISTS ] name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] [, ...] [ CASCADE | RESTRICT ] .. container:: refsect1 :name: id-1.9.3.124.5 .. rubric:: 简介 :name: 简介 ``DROP PROCEDURE``\ 移除一个现有过程的定义。为了执行这个命令,用户必须是该过程的拥有者。该过程的参数类型必须指定,因为可能存在多个不同的过程具有相同名称和不同参数列表。 .. container:: refsect1 :name: id-1.9.3.124.6 .. rubric:: 参数 :name: 参数 .. container:: variablelist ``IF EXISTS`` 如果该过程不存在也不抛出一个错误。这种情况下会发出一个提示。 ``name`` 现有过程的名称(可以是被方案限定的)。如果没有指定参数列表,则该名称在其所属的方案中必须是唯一的。 ``argmode`` 参数的模式:\ ``IN``\ 或者\ ``VARIADIC``\ 。如果省略,默认为\ ``IN``\ 。 ``argname`` 参数的名称。注意,其实\ ``DROP PROCEDURE``\ 并不在意参数名称,因为只需要参数的数据类型来确定过程的身份。 ``argtype`` 该过程如果有参数,参数的数据类型(可以是被方案限定的)。 ``CASCADE`` 自动删除依赖于该过程的对象,然后接着删除依赖于那些对象的对象(见\ `节 `__)。 ``RESTRICT`` 如果有任何对象依赖于该过程,则拒绝删除它。这是默认选项。 .. container:: refsect1 :name: SQL-DROPPROCEDURE-EXAMPLES .. rubric:: 示例 :name: 示例 .. code:: programlisting DROP PROCEDURE do_db_maintenance(); .. container:: refsect1 :name: SQL-DROPPROCEDURE-COMPATIBILITY .. rubric:: 兼容性 :name: 兼容性 这个命令符合SQL标准,不过 OushuDB 做了这些扩展: .. container:: itemizedlist - 标准仅允许每个命令删除一个过程。 - ``IF EXISTS``\ 选项 - 指定参数模式和名称的能力 .. container:: refsect1 :name: id-1.9.3.124.9 .. rubric:: 另见 :name: 另见 `CREATE PROCEDURE `__, `ALTER PROCEDURE `__, `DROP FUNCTION `__, `DROP ROUTINE `__