Sql 不一致的数据类型:预期-获取字符

Sql 不一致的数据类型:预期-获取字符,sql,database,oracle,oracle11g,Sql,Database,Oracle,Oracle11g,我有一个senario where,我的查询中有以下where子句。我正在使用Oracle 11g(11.2.0.1) 这个bind变量的值是一个数组,但是当我试图将空值传递给这个bind变量时,我得到了以下错误 预期-获取字符错误 任何人都可以告诉我如何将null值传递给这个Bind变量,以便查询将返回所有行集,而不应用where条件 堆栈跟踪如下所示 ORA-00932: inconsistent datatypes: expected - got CHAR 00932. 00000 -

我有一个senario where,我的查询中有以下where子句。我正在使用Oracle 11g(11.2.0.1)

这个bind变量的值是一个数组,但是当我试图将空值传递给这个bind变量时,我得到了以下错误
预期-获取字符错误
任何人都可以告诉我如何将
null
值传递给这个
Bind
变量,以便查询将返回所有行集,而不应用where条件

堆栈跟踪如下所示

ORA-00932: inconsistent datatypes: expected - got CHAR
00932. 00000 -  "inconsistent datatypes: expected %s got %s"
*Cause:    
*Action:
我也尝试了以下方法,但没有成功,仍然得到了相同的异常

我尝试使用条件
where
子句,但仍然得到相同的错误

WHERE (CASE WHEN :pbindvar is NULL THEN 1 
WHEN attribute_name IN (SELECT * FROM TABLE(CAST(:pbindvar AS CHARTABLETYPE))) THEN 1 
ELSE 0 
END) = 1
如果我像下面提到的那样更改第二个条件
where
子句,查询将返回所有行

WHERE (CASE WHEN :pbindvar is NULL THEN 1 
WHEN attribute_name IN (:pbindvar) THEN 1 
ELSE 0 
    END) = 1
使用hr模式的示例查询

select * from Departments where department_name in (Select * from table(cast(:pbindvar as CHARTABLETYPE))) or :pbindvar is Null;
为类型创建查询

create or replace type chartabletype 
as table of VARCHAR2(4000);

只有当null被传递给bind变量时,才会出现问题

我无法使用PL/SQL在Oracle 11g中重现该行为。你能提供一个描述你的问题的例子吗?你能提供一个例子:pbindvar吗?@Ben你能不能就如何做到这一点进行讨论?因为我对这个问题还很陌生。@SylvainLeroux我添加了一个示例查询,我们正面临这个问题。我只是通过运行SQLDeveloper的普通查询来解决这个问题。你能告诉我Oracle正在运行的版本吗。我正在运行11.2.0.3。在子查询中,不要使用
select*
,只指定比较所需的列&/或者我假设table函数独立于()中的函数工作
create or replace type chartabletype 
as table of VARCHAR2(4000);