CREATE MODULE 语句
CREATE MODULE 语句在应用程序服务器上创建模块。
调用
此语句可以嵌入在应用程序中,也可通过动态 SQL 语句来发出。 它是一个可执行语句,仅当 DYNAMICRULES 运行行为对于程序包有效时才能动态编译 (SQLSTATE 42509)。授权
语句授权标识所拥有的特权必须至少包括下列其中一项权限:
- 数据库上的 IMPLICIT_SCHEMA 权限 (如果模块的隐式或显式模式名不存在)。
- CREATEIN 对模式的特权 (如果模块的模式名称引用现有模式)。
- 对模式的 SCHEMAADM 权限 (如果模块的模式名称引用现有模式)。
- DBADM 权限
语法
描述
- 或替换
- 指定替换模块的定义 (如果当前服务器上存在)。 在目录中替换新定义之前,将有效删除现有模块定义 (包括模块中的所有对象) ,但对模块授予的特权不受影响。 如果当前服务器上不存在模块的定义,那么将忽略此选项。 此选项只能由对象所有者指定。 模块名称
- 命名模块。 名称 (包括隐式或显式限定符) 不能标识当前服务器上的现有模块。 模块名称和模式名称不得以字符 "SYS" 开头 (SQLSTATE 42939) ,建议不要使用 SESSION。
注意
- 模块旨在作为其他数据库对象的集合。 创建模块后,将使用 ALTER MODULE 语句来管理模块中的对象。 模块可以包含函数,过程,类型,全局变量和条件。 可以发布模块中的对象以使其可供从模块外部引用。 如果未发布对象,那么只能从模块中引用该对象。 可以认为模块由 2 部分组成:
- 模块规范由所有已发布的对象 (不包括任何例程的主体) 组成。
- 由所有未发布的对象以及任何已发布例程的主体组成的模块主体。
- ADD ,用于向模块添加对象而不发布该对象,或者将例程原型替换为已实现的例程定义。
- PUBLISH 用于向模块添加对象并将其发布。
- 对模块中的对象的 COMMENT。
- DROP 用于删除模块中的对象或删除模块主体。
示例
创建名为 salesModule 的模块
CREATE MODULE salesModule 