HSQLDB系统函数使用、SQL调用及Java调用相关问题咨询
HSQLDB系统函数使用说明
基础调用规则
- 你提到的
DATABASE、SESSION_ID这类无参系统函数,不需要绑定业务表查询。HSQLDB提供了虚表DUAL专门用于这类无数据源的查询场景,2.0及以上版本甚至可以直接省略FROM子句。
具体SQL示例
获取当前会话ID的两种合法写法:
- 全版本兼容写法
SELECT SESSION_ID FROM DUAL;
- 2.0+版本简化写法
SELECT SESSION_ID();
查询当前数据库名同理:
SELECT DATABASE FROM DUAL;
Java代码调用方法
可以直接通过JDBC、以及基于JDBC封装的持久层框架(JPA、MyBatis等)调用,和普通SQL查询逻辑完全一致,JDBC调用示例如下:
import java.sql.Connection; import java.sql.Statement; import java.sql.ResultSet; import java.sql.SQLException; // 此处省略获取HSQLDB连接的逻辑,conn为已生效的数据库连接对象 public long getCurrentSessionId(Connection conn) throws SQLException { String querySql = "SELECT SESSION_ID FROM DUAL"; try (Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(querySql)) { if (rs.next()) { return rs.getLong(1); } throw new SQLException("无法获取当前会话ID"); } }
内容的提问来源于stack exchange,提问作者RainerMtb
相关产品推荐
相关产品推荐

