外部例程引用

当编写外部例程时使用外部例程引用。该项对 SPL 例程无效。

外部例程引用

用法

如果 IFX_EXTEND_ROLE 配置参数设置为 ON1,则只能授予数据库服务器管理员(DBSA)及 DBSA 已经授予 EXTEND 角色的用户使用这个段的权限。缺省情况下,DBSA 是用户 gbasedbt。此外,您不能创建外部例程除非您持有数据库的 Resource 或 DBA 特权,并且还拥有编写此例程的外部程序语言的 Usage 特权。有关 GRANT USAGE ON LANGUAGE C 和 GRANT USAGE ON LANGUAGE JAVA 语句的语法,请参阅 语言级权限

这个段指定以下关于外部例程的信息:
  • 存储在共享对象文件中的可执行目标代码的路径名

    对于 C 例程,这个文件可以是 DLL 或共享库,这取决于您的操作系统。

    对于 Java 例程,这个文件是 jar 文件。在能够创建用 Java 语句编写的 UDR 之前,必须用 sqlj.install_jar 过程分配一个 jar 标识符给外部 jar 文件。有关更多信息,请参阅 sqlj.install_jar
  • 用来编写 UDR 的编程语言的名称
  • UDR 的参数样式

    缺省情况下,参数样式是 GBASEDBT。(这意味着如果指定 OUT 或 INOUT 参数,则 OUT 或 INOUT 值通过引用来传递。)

  • VARIANT 或 NOT VARIANT 选项。如果指定其中一个,缺省为 VARIANT。如果例程包含任何 SQL 语句,它是一个 VARIANT 例程。如果包含外部例程引用子句的 DDL 语句还包含例程修改符子句,那么请不要在其中一个子句中将相同的 UDR 分类为 VARIANT ,而在其它子句中将 VARIANT 分类为 NOT VARIANT 。

示例

下面的示例包含 Java 语言编写 UDR 引用的外部例程。您必须首先使用过程 install_jar(<absolute path><jar file name>,<internal registered name>)注册 demo_jar
CREATE FUNCTION delete_order(int) RETURNING int
              EXTERNAL NAME 'gbasedbt.demo_jar:delete_order.delete_order()'
              LANGUAGE JAVA;
            
1 C
2 Java™
3 请参阅 共享对象文件名