准备语句执行批处理所必需的权限

时间:2018-01-10 12:24:05

标签: sql oracle

我使用PreparedStatement .addBatch()和.executeBatch()方法获得了一小段代码。

但是,我收到以下异常:

java.sql.BatchUpdateException: ORA-01031: insufficient privileges

at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10500)
at oracle.jdbc.driver.OracleStatementWrapper.executeBatch(OracleStatementWrapper.java:230)
blah blah blah

我可以很好地执行大多数SQL语句,但不能执行批处理操作。我是否需要授予数据库用户特定权限才能使用这些操作?

修改

如果我需要INSERT / UPDATE以外的特殊权限,我需要哪种权限?

修改2

原来我的DBA不想为我的帐户提供所需的权限。感谢大家的帮助。

1 个答案:

答案 0 :(得分:1)

我不是100%,但我认为您不需要任何特殊权限来执行批量操作。
可能您的数据库用户已经收到角色CONNECTION或至少"创建会话"特权。 你可以做以下事情

grant all on your_table to your_user;

其中all表示DELETE, INSERT, REFERENCES, SELECT, TRIGGER, UPDATE。 或只选择相关的权限。

grant  DELETE, INSERT, SELECT,  UPDATE on your_table to your_user.

如果您在查询中使用序列。你还必须批准。

GRANT USAGE ON your_sequence to your_user

如果您在查询中使用任何自定义程序包或函数。你还必须批准。

GRANT execute ON your_package to your_user