【问题标题】:User and Session info from within JAVA UDF Oracle 11gJAVA UDF Oracle 11g 中的用户和会话信息
【发布时间】:2017-10-23 11:47:32
【问题描述】:

我希望得到用户信息,就像提供的一样

SELECT SYS_CONTEXT ('USERENV', 'SESSION_USER') FROM DUAL; 

SELECT SYS_CONTEXT ('USERENV', 'OS_USER') FROM DUAL;

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

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

更一般地说,问题陈述是获取有关已登录数据库并使用该 java UDF 的用户的信息(我们需要在哪里确定这些信息)?

【问题讨论】:

    标签: java oracle jdbc oracle11g oracle-sqldeveloper


    【解决方案1】:

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

    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;
    }
    

    【讨论】:

      猜你喜欢
      • 2014-08-16
      • 1970-01-01
      • 2017-10-20
      • 1970-01-01
      • 2017-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多