【问题标题】:hsqldb system functions how to usehsqldb系统函数如何使用
【发布时间】:2022-01-03 15:04:06
【问题描述】:

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

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

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

【问题讨论】:

    标签: hsqldb


    【解决方案1】:

    所有函数都可以在 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 语句。这将返回一个包含指定值的表,这些值可以是常量或函数调用的结果。

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

    【讨论】:

    • 好的,谢谢。所以它总是必须像executeQuery("CALL SESSION_ID()")那样用括号,对吧?
    • SESSION_USER 等一些函数可以带括号也可以不带括号。这显示在hsqldb.org/doc/2.0/guide/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多