【问题标题】:SQL Developer SQL Tuning Advisor not all variables boundSQL Developer SQL Tuning Advisor 并非所有变量都绑定
【发布时间】:2023-03-27 04:44:01
【问题描述】:

我正在尝试将 SQL 调优顾问与 SQL Developer(版本 4.1.3.20 和 17.2.0.188)一起使用。使用多个绑定变量实例的查询,例如:

select * from dual where :one = :one;

导致 SQL Tuning Advisor 出错:

-------------------------------------------------------------------------------
ERRORS SECTION
-------------------------------------------------------------------------------
- ORA-01008: not all variables bound

-------------------------------------------------------------------------------

对于具有一个或多个绑定变量的多个实例的查询,是否有解决方法或其他方法来获取相同的 SQL 调整信息?

【问题讨论】:

  • 即使你在命名,你也不能重用绑定,它们总是基于位置的。你需要按顺序绑定两次。
  • @Ben 这不是 SQL Developer 的问题吗?我这里不是写SQL开发者,我是用的。
  • 我认为你发现了一个错误,如果我有 2 个不同名称的绑定,则顾问运行没有问题

标签: oracle oracle-sqldeveloper sql-tuning


【解决方案1】:

基本上,Tuning Advisor 按位置(而不是名称)绑定。所以解决方法是重命名所有重复的变量实例。添加编号后缀就足够了。在您的示例中,您必须将变量命名为 :one 和 :one_1。

select * from dual where :one = :one_1;

我知道,这并不理想,但应该可以。

【讨论】:

    【解决方案2】:

    不确定为什么要使用“:one = :one”,可以将其替换为“1 = 1”,或者再添加一个由相同值分配的变量,select * from dual where :one = :two ;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-11
      • 2016-03-14
      • 1970-01-01
      • 2011-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多