我有以下查询: 首先我创建了一个类型:
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);和其他组合,但仍然得到相同的错误。
我确信它是由于尺寸,但无法得到正确的计算! 任何帮助将受到高度赞赏。 提前谢谢。
答案 0 :(得分:0)
我相信在Oracle DB中,任何具有1000个以上条目的插入都会抛出ORA-00939。我是通过让脚本从Oracle Spatial DB上的大量生成多边形中发现的。
您也许可以使用EXISTS
来解决所需的内容。