首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle - SET ROLE语句

Oracle - SET ROLE语句
EN

Stack Overflow用户
提问于 2017-02-26 16:05:28
回答 1查看 602关注 0票数 1

下面的代码在java中不起作用。

代码语言:javascript
复制
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();

上面的代码抛出了一个异常:

代码语言:javascript
复制
java.sql.SQLSyntaxErrorException: ORA-01937: missing or invalid role name

我在成功执行的命令模式下尝试了相同的角色和密码。

EN

回答 1

Stack Overflow用户

发布于 2017-02-26 16:13:04

您只能使用PreparedStatement的绑定变量来绑定,而不能绑定诸如角色名称或其密码之类的标识符。您必须求助于字符串操作才能获得此效果(假设值不是硬编码的,如上所述,在这种情况下,您只需将它们放入字符串中即可)。例如:

代码语言:javascript
复制
String role = "TEST_ROLE";
String pswd = "TEST_PASS";
String sql = String.format("set role %s identified by %s", role, pswd);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42466171

复制
相关文章

相似问题

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