Java为oracle alter session查询准备了语句参数
作者:互联网
我尝试执行oracle alter session查询来更改语言设置,但它失败并显示错误“ORA-01036:非法变量名称/编号”.
preparedStatement = connection.prepareStatement("ALTER SESSION SET NLS_SORT = ?");
preparedStatement.setString(1, "BINARY_CI");
preparedStatement.execute();
Oracle不允许在ddl语句中绑定变量.由于绑定变量具有性能提升(在我的用例中,此alter session查询将在Web应用程序中使用的每个连接上执行),并且它还会阻止应用程序从SQL注入我想使用它们.如果没有绑定变量,还有其他任何优化的方法来执行上面的alter session查询吗?
解决方法:
绑定变量具有性能提升,因为查询解析/优化仅执行一次,而不是每次执行.
在该alter session调用上没有进行解析,使用绑定变量在这里不会获得任何性能方面的信息.
对于SQL注入,只需根据您支持的排序规则列表验证排序规则的名称.
标签:java,oracle,prepared-statement,bind-variables 来源: https://codeday.me/bug/20190903/1798158.html