我希望获得用户信息,就像
SELECT SYS_CONTEXT ('USERENV', 'SESSION_USER') FROM DUAL;
和
SELECT SYS_CONTEXT ('USERENV', 'OS_USER') FROM DUAL;
在11g中,无需建立JDBC连接并运行这些查询以从DUAL查询。
我尝试过System.getProperty("user.name")
通过jvm读取当前的OS_user,但我认为我们不允许在数据库环境之外获取信息。
更笼统地说,问题语句是获取登录到数据库的用户的信息,并使用那个java (在这里我们需要确定这些信息)?
发布于 2017-05-27 17:20:08
我已经通过使用"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;
}
https://stackoverflow.com/questions/44136244
复制相似问题