使用 'sessionid' 选项

DBINFO 函数的 'sessionid' 选项返回您的当前会话的会话 ID。当客户端应用连接到数据库服务器时,数据库服务器启动与客户端的会话,并为该客户端指定一会话 ID。该会话 ID 用作客户端与数据库服务器之间给定连接的唯一的标识符。

数据库服务器在称为会话控制块的共享内存中的数据结构中存储该会话 ID 的值。给定会话的会话控制块还包括用户 ID、客户端的进程 ID、主机计算机的名称和各种状态标志。

当您指定 'sessionid' 选项时,数据库服务器从会话控制块检索您的当前会话的会话 ID,并将此值作为整数返回给您。sysmaster 数据库中的某些“系统监视接口”(SMI)表包括会话 ID 的列,因此您可使用 DBINFO 函数获取了的会话 ID 来从这些 SMI 表抽取关于您自己的会话的信息。要获取关于会话控制块的更多信息,请参阅 GBase 8s 管理员指南。要获取关于 sysmaster 数据库和 SMI 表的更多信息,请参阅 GBase 8s 管理员参考手册

在下列示例中,用户在 SELECT 语句中指定 DBINFO 函数来获取当前会话 ID 的值。用户产生针对 systables 系统目录表的查询,并使用 WHERE 子句来将查询结果限定为单个行。
SELECT DBINFO('sessionid') AS my_sessionid
        FROM systables
        WHERE tabname = 'systables';
在前面的示例中,SELECT 语句针对 systables 系统目录表查询。然而,您可通过针对任何系统目录表或数据库中的用户表进行查询,获取当前会话的会话 ID。 例如,您可输入下列查询来获取您的当前会话的会话 ID:
SELECT DBINFO('sessionid') AS user_sessionid
        FROM customer
        WHERE customer_num = 101;
您不仅可在 SQL 语句中使用 DBINFO 'sessionid' 选项,还可在 SPL 例程中使用。 下列示例展示返回当前会话 ID 的值的 SPL 函数来调用程序或例程:
CREATE FUNCTION get_sess()
        RETURNING INT;
        RETURN DBINFO('sessionid');
        END FUNCTION;