不一致的数据类型:预期 - 得到CHAR

时间:2014-09-25 11:53:35

标签: sql database oracle oracle11g

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

select * from aTable WHERE (attribute_name IN 
(SELECT * FROM TABLE(CAST(:pbindvar AS CHARTABLETYPE)))or :pbindvar IS NULL)

此绑定变量的值是一个数组,但是当我尝试将null值传递给此bindvariable时,我收到以下错误 Expected - Got Char Error 任何人都可以告诉我如何将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 传递给绑定变量

时才会出现此问题

0 个答案:

没有答案