来自JAVA UDF Oracle 11g

时间:2017-05-23 13:28:33

标签: java oracle jdbc oracle11g oracle-sqldeveloper

我希望得到

提供的用户信息
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的用户的信息(我们需要确定这些信息)?

1 个答案:

答案 0 :(得分:0)

我通过使用"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; } ,因为这是一个共享流,一旦关闭就关闭了所有数据库客户端。

int myWidth = 512;
int myHeight = 512;
int borderSize=20;

Glide.with(yourApplicationContext))
    .load(youUrl)
    .asBitmap()
    .into(new SimpleTarget<Bitmap>(myWidth, myHeight) {
        @Override
        public void onResourceReady(Bitmap bitmap, GlideAnimation anim) {
        Bitmap bmpWithBorder = Bitmap.createBitmap(bitmap.getWidth() + borderSize * 2, bitmap.getHeight() + borderSize * 2, bitmap.getConfig());
       Canvas canvas = new Canvas(bmpWithBorder);
       canvas.drawColor(Color.WHITE);
        canvas.drawBitmap(bitmap, borderSize, borderSize, null);
       //Now you can use bmpWithBorder on ImageView you want

        }
    };