如何解决“ORA-00939:函数参数太多”错误?

时间:2016-11-01 08:27:01

标签: oracle

我有以下查询: 首先我创建了一个类型:

CREATE OR REPLACE TYPE array_id IS VARRAY(50000) OF VARCHAR2(50);

我正在执行以下查询:

SELECT B.ID,
       LISTAGG (A.NAME,', ') WITHIN GROUP (ORDER BY A.NAME),
       Assignednames,
       B.IsManager
FROM LOCATION A
INNER JOIN EMPLOYEES B
    ON A.LOCATIONID = B.LOCATIONID
WHERE B.ID IN (SELECT * FROM table(array_id('244410','PERF507' )) )
GROUP BY B.ID,
         B.IsManager 

现在,当我执行上面的查询时,当array_id('244410','PERF507')中的元素数量较少时,它工作正常。但在实际环境中,我有大约15K的记录;并给出以下错误:

ORA-00939: too many arguments for function

现在,我尝试更改类型: 创建或替换类型array_id IS VARRAY(50000)OF VARCHAR2(50); 创建或替换类型array_id IS VARRAY(500000)OF VARCHAR2(20);和其他组合,但仍然得到相同的错误。

我确信它是由于尺寸,但无法得到正确的计算! 任何帮助将受到高度赞赏。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

我相信在Oracle DB中,任何具有1000个以上条目的插入都会抛出ORA-00939。我是通过让脚本从Oracle Spatial DB上的大量生成多边形中发现的。

您也许可以使用EXISTS来解决所需的内容。