hsqldb系统函数如何使用

hsqldb system functions how to use

Hsqldb 的文档在第 4 章“内置函数”中列出了几个“系统函数”,例如 DATABASESESSION_ID

我不知道如何使用它们?例如,如何获取当前会话的 ID?我是否应该将 SESSION_ID 编写为 sql 查询的一部分,如果是这样,那么完整的查询是什么?我想到了 select SESSION_ID from ... 之类的东西,但从何而来?

可以从Java代码中调用这些函数吗?

所有函数都可以在 SQL CALL 语句中使用。例如:

CALL SESSION_ID()

CALL 语句可以通过JDBC executeQuery() 执行。例如:

Connection c = ...;
Statement s = c.createStatement();
ResultSet r = s.executeQuery("CALL SESSION_ID");
r.next();
long sessionId = r.getLong(1);

比 CALL 语句更灵活的替代方法是 VALUES 语句。这个returns一个包含指定值的table,可以是常量或函数调用的结果。

ResultSet r1 = s.executeQuery("VALUES SESSION_ID()");

ResultSet r2 = s.executeQuery("VALUES SESSION_ID(), DATABASE()");