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

问题描述 投票:2回答:1

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

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')中的元素数量较少时,它可以正常工作。但是在实际环境中,我有大约15,000条记录;并给出以下错误:

ORA-00939: too many arguments for function

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

我确定是由于尺寸,但是无法获得正确的计算!任何帮助将不胜感激。预先感谢。

oracle
1个回答
0
投票

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

您可能可以使用EXISTS解决您要寻找的内容。


推荐问答