C语言 ORA-01795:列表中的最大表达式数为 1000,如何拆分字符串



如何拆分以下字符串?

      A.x IN (changeList),

changeList 具有以下值,因此它使子句如下所示:

       A.x IN (HEXTORAW('1E2956B9266F11DDA85810000000C959'),HEXTORAW   
             ('ADD834AD6A3911DF923C10000000C959'),HEX...........

上面的IN有超过1000个值,因此ORA-01795错误,如何修改它,以便我有

A.X IN (id1, ..id999) 或 A.x IN (id1000,...),任何 c 代码都会帮助我......

您必须编写一个循环,该循环以块的形式执行 SQL,每个块有 1000 个条目。

或者,您可以将值插入到表中,然后使用 IN 子句执行子选择,因为对于子选择,1000 个条目的限制不适用。仅当您使用具有硬编码值字符串的 SQL 时,才有此限制。

像这样:

select *
from mytable t
where t.column1 = value
and t.column2 in
(
    select my_values
    from my_temp_table
)

最新更新