hsqldb系统函数如何使用
hsqldb system functions how to use
Hsqldb 的文档在第 4 章“内置函数”中列出了几个“系统函数”,例如 DATABASE
或 SESSION_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()");
Hsqldb 的文档在第 4 章“内置函数”中列出了几个“系统函数”,例如 DATABASE
或 SESSION_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()");