首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JAVA UDF Oracle 11g中的用户和会话信息

JAVA UDF Oracle 11g中的用户和会话信息
EN

Stack Overflow用户
提问于 2017-05-23 13:28:33
回答 1查看 86关注 0票数 0

我希望获得用户信息,就像

代码语言:javascript
运行
复制
SELECT SYS_CONTEXT ('USERENV', 'SESSION_USER') FROM DUAL; 

代码语言:javascript
运行
复制
SELECT SYS_CONTEXT ('USERENV', 'OS_USER') FROM DUAL;

在11g中,无需建立JDBC连接并运行这些查询以从DUAL查询。

我尝试过System.getProperty("user.name")通过jvm读取当前的OS_user,但我认为我们不允许在数据库环境之外获取信息。

更笼统地说,问题语句是获取登录到数据库的用户的信息,并使用那个java (在这里我们需要确定这些信息)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-27 17:20:08

我已经通过使用"jdbc:default:connection"找到了解决上述问题的方法,这是一个由数据库本身维护的内部连接,它总是可用的。注意,我最终没有执行conn.close();,因为这是一个共享流,一旦关闭,对于所有数据库客户端都会关闭。

代码语言:javascript
运行
复制
public static String doSQL() throws SQLException {
    String result = new String();
    String q1 = "SELECT SYS_CONTEXT('USERENV','SESSION_USER') FROM DUAL";
    Connection conn =
            DriverManager.getConnection("jdbc:default:connection");
    PreparedStatement ps = conn.prepareStatement(
            q1
    );
    ResultSet rs = ps.executeQuery();
    while (rs.next())
        result = rs.getString(1);
    return "my udf says"+result;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44136244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档