删除模块中的对象

不再需要模块内定义的对象时,可删除模块。如果只是不再需要模块中的某些对象,那么可选择仅删除这些对象。

开始之前

继续此任务之前:
  • 模块必须存在。
  • 您必须具有执行 ALTER MODULE 语句的权限。

关于此任务

可通过任何受支持 接口执行此任务。

限制

有关限制:

过程

  1. 要从模块中删除一个或多个对象,请创建 ALTER MODULE 语句:
    1. 指定要删除的模块的名称。
    2. 指定 DROP 子句。
    3. 指定要删除的模块对象的名称。如果模块对象是例程,请指定例程的特征符。
  2. 要删除模块中的所有对象,请创建 ALTER MODULE 语句:
    1. 指定模块的名称。
    2. 指定 DROP BODY 子句。
  3. 执行 ALTER MODULE 语句。

结果

如果该语句成功执行,那么会从模块中删除指定的模块对象。

示例

考虑定义为如下所示的模块:
CREATE MODULE m @  

ALTER MODULE m PUBLISH PROCEDURE B() @  

ALTER MODULE m PUBLISH PROCEDURE A() 
                         BEGIN      
                           CALL B();         
                         END @  

ALTER MODULE m ADD PROCEDURE B() BEGIN  END @ 
可通过执行以下语句来删除过程 B:
ALTER MODULE m DROP PROCEDURE B @
该语句成功执行时,会从模块 m 中删除过程 B。从属对象过程 A 将标记为不可操作,原因是它引用的过程 B 不再可用。

可通过执行以下语句删除模块 m 中定义的所有专用对象:

ALTER MODULE m DROP BODY @
该语句成功执行时:
  • 模块中定义的已发布过程的主体将被删除。过程原型保持已定义状态。
  • 模块专用的数据类型和全局变量被删除。已发布数据类型和全局变量保持已定义状态。
  • 模块未被删除。它在模式内保持已定义状态。

下一步做什么

从模块中成功删除对象后,您可能想要创建模块对象、改变模块或其他与任务相关的模块。