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

7vux5j2d  于 2023-05-28  发布在  Oracle
关注(0)|答案(1)|浏览(345)

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

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','PERF 507')中的元素数量较少时,它工作得很好。并给出以下错误:

ORA-00939: too many arguments for function

现在,我试着改变类型:CREATE OR REPLACE TYPE array_id IS VARRAY(50000)OF VARCHAR2(50);创建或替换类型array_id是VARRAY(500000)的VARCHAR 2(20);和其他组合,但仍然得到相同的误差。
我敢肯定,这是由于大小,但不能得到正确的计算!任何帮助将不胜感激。先谢谢你了。

jchrr9hc

jchrr9hc1#

我相信在Oracle DB中,任何超过1,000个条目的插入都会抛出ORA-00939。我发现这是通过一个脚本从Oracle Spatial DB上的地块生成多边形。
您可以使用EXISTS来解决您正在寻找的问题。

相关问题