Javaでは動作しません。Oracle - SET ROLEステートメント
Class.forName('oracle.jdbc.driver.OracleDriver');
Connection connection = DriverManager.getConnection('jdbc:oracle:thin:@localhost:1521:test', 'xyz', 'pass');
PreparedStatement stmt = connection.prepareStatement("set role ? identified by ?");
String role = "TEST_ROLE";
String pswd = "TEST_PASS";
stmt.setString(1, role);
stmt.setString(2, pswd);
stmt.execute();
そして、上記のコードが例外をスローします。
java.sql.SQLSyntaxErrorException: ORA-01937: missing or invalid role name
私はそれが正常に実行されたコマンドモードから同じ役割とパスワードを試してみました。
ロール名は識別子です。プリペアドステートメントでは、識別子としてパラメータを渡すことはできません。 –
代わりにSQLにparamsを連結し、実行してみてください。 – GurV
@GurV、私は現在パラメタを連結してコードを持っています。ロガーではパスワードを出力します。私はロガーでパスワードを表示しないようにする必要があります。 – user3515080