声明全局变量

语法:
元素 描述 限制 语法
data_type SPL_var 的类型 请参阅 声明全局变量. 数据类型
SPL_var 新的 SPL 变量 在语句块中必须是唯一的 标识符

GLOBAL 关键字表示跟随的变量的引用作用域包含所有在给定的 DB-Access 或 SQL 管理 API 会话中运行的 SPL 例程。这些变量的数据类型必须与全局环境中的变量数据类型相匹配。全局变量是由所有 SPL 例程使用的内存。这些例程在给定的 DB-Access 或 SQL 管理 API 会话中运行。全局变量的值存储在内存中。

在当前会话中运行的 SPL 例程共享全局变量。因为数据库服务器不将全局变量保存在数据库中,所有当前会话关闭时不保留全局变量。

全局变量的第一个声明建立全局环境中的变量;后续全局声明只是将该变量绑定到全局环境并在此时建立变量的值。

以下示例显示两个 SPL 过程,proc1proc2;每个过程都已定义了全局变量 gl_out
  • SPL procedure proc1
    CREATE PROCEDURE proc1()
              ...
              DEFINE GLOBAL gl_out INT DEFAULT 13;
              ...
              LET gl_out = gl_out + 1;
              END PROCEDURE;
  • SPL procedure proc2
    CREATE PROCEDURE proc2()
                ...
                DEFINE GLOBAL gl_out INT DEFAULT 23;
                DEFINE tmp INT;
                ...
                LET tmp = gl_out
                END PROCEDURE;

如果首先调用 proc1,则 gl_out 被设置为 13,然后增加为 14。如果接下来调用 proc2,它会发现 gl_out 已被定义,这样就不应用缺省值 23 。然后,proc2 将现有值 14 分配给 tmp。如果首先调用了 proc2 ,则 gl_out 会被设置为 23,并且 23 可能被分配给 tmp。以后对 proc1 的调用将不应用缺省值 13

不同数据库服务器实例的数据库不共享全局变量,但是在单个会话中,同一个数据库服务器实例的所有数据库可以共享全局 SPL 变量。然而,数据库服务器和任何应用程序开发工具都不共享全局变量。

1 请参阅 缺省值