Oracle SQL开发人员SQL调优顾问绑定变量是否可以为空?

Oracle SQL开发人员SQL调优顾问绑定变量是否可以为空?,oracle,oracle-sqldeveloper,sql-tuning,Oracle,Oracle Sqldeveloper,Sql Tuning,在sqldeveloper(v4.1)中,当我尝试对带有一个或多个绑定变量的查询运行sqltuningadvisor时,如果我将其中任何一个变量保留为null,那么sqltuningadvisor根本不会显示任何信息。这是SQL开发人员的错误,还是我误解了空值、绑定和调优 select * from dual where nvl(:p,-1) = 1; 下面是一个简单的例子: select * from dual where :p = 1; 突出显示查询并按Ctrl+F12,系统将提示您输入

在sqldeveloper(v4.1)中,当我尝试对带有一个或多个绑定变量的查询运行sqltuningadvisor时,如果我将其中任何一个变量保留为null,那么sqltuningadvisor根本不会显示任何信息。这是SQL开发人员的错误,还是我误解了空值、绑定和调优

select * from dual where nvl(:p,-1) = 1;
下面是一个简单的例子:

select * from dual where :p = 1;
突出显示查询并按Ctrl+F12,系统将提示您输入
p
的值。选中“空”复选框并单击“应用”:

SQL Tuning Advisor似乎立即停止运行,并且不显示查询的详细信息:

这是SQL开发人员的错误,还是我误解了空值、绑定和调优

select * from dual where nvl(:p,-1) = 1;

WHERE子句中的任何null都会使所有布尔代数为null(FALSE)

我无法用SQL Developer 17.2和12c数据库重现该错误。我确实注意到了一些与10g数据库绑定相关的SQL调优顾问相关的Bug(例如Bug 6854919)。谢谢@PatrickBacon。我运行了17.2的一个副本,它工作正常,所以这个错误显然已经被纠正了。