oracle alter session查询的Java准备语句参数

标签 java oracle prepared-statement bind-variables

我尝试执行 oracle alter session 查询以更改语言设置,但失败并出现错误“ORA-01036:非法变量名称/编号”。

preparedStatement = connection.prepareStatement("ALTER SESSION SET NLS_SORT = ?");

preparedStatement.setString(1, "BINARY_CI");

preparedStatement.execute();

Oracle 不允许在ddl 语句中绑定(bind)变量。由于绑定(bind)变量具有性能增益(在我的用例中,此更改 session 查询将在 Web 应用程序中使用的每个连接上执行)并且它还可以防止应用程序进行 SQL 注入(inject),我想使用它们。如果不绑定(bind)变量,是否有任何其他优化方法来执行上述更改 session 查询?

最佳答案

绑定(bind)变量具有性能提升,因为查询解析/优化只进行一次,而不是在每次执行时进行。

alter session 调用没有进行任何解析,在这里使用绑定(bind)变量不会为您带来任何性能方面的好处。

对于 SQL 注入(inject),只需根据您支持的排序规则列表验证排序规则的名称。

关于oracle alter session查询的Java准备语句参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5513975/

相关文章:

oracle - 如何连接到 docker Oracle 实例

mysql - PDO 语句错误 #1064

Java Dice Game - 根据掷骰子和轮流选择谁开始游戏

java - 为什么会出现堆内存不足异常?

java - Spring 将 servlet contextConfigLocation 类视为路径,尽管 contextClass 正确

r - 如何从 R 调用存储在 Oracle 数据库上的 PL/SQL 过程

java - 带有 ext 属性的 elasticsearch 查询

sql - 为什么 'KILL SESSION' (Oracle SQL) 中需要 sid?

java - Java 和 Mysql 中 PreperedStatement 的错误

php - 调用非对象上的成员函数bind_param()——在准备之前返回