【发布时间】:2012-09-05 04:43:50
【问题描述】:
我有一个这样的 PL/SQL 脚本...
DECLARE
CURSOR curs_delete
IS
SELECT cus_num
FROM dob.cust_table GROUP BY cust_num HAVING COUNT(*)>1;
TYPE row_cust_num IS TABLE OF dob.cust_table.cust_num%TYPE;
col_cust_num row_cust_num;
BEGIN
OPEN curs_delete;
LOOP
FETCH curs_delete
BULK COLLECT INTO col_cust_num LIMIT 10000;
EXIT WHEN col_cust_num.EXISTS (1) = FALSE;
FORALL i IN 1 .. col_cust_num.LAST
DELETE FROM cust_table
WHERE cust_num = col_cust_num (i);
COMMIT;
END LOOP;
CLOSE curs_delete;
END;
此查询返回ORA-12805:parallel query server died unexpectedly 错误。我不确定为什么会这样。当我遇到这个错误时,游标中的选择查询返回了大约 415 条记录。
有人知道为什么会出现这个错误吗?
【问题讨论】:
-
太模糊和投机,无法将其作为答案,但无论如何:在游标循环中提交可能会使游标无效。尝试取出内循环的
COMMIT,看看是否改善了结果。