我遇到了Oracle错误( ORA-01008 ):问题是第一次出现此错误,没有修改表/架构(但是有数据库升级) 。 我试过立即执行,但我仍然得到同样的错误。
SET serveroutput ON;
set define off;
--alter session set "_subquery_pruning_enabled"=false;
DECLARE
z_value NUMBER := -1;
CURSOR listedocument
IS
select to_number(2310458) as coco from dual;
BEGIN
FOR l IN listedocument
LOOP
BEGIN
dbms_output.put_line (' l.coco= ' || l.coco );
SELECT oa.myvalue
INTO z_value
FROM schema2.table2 oa
INNER JOIN
schema1.table1 ed
ON ed.coco = oa.coco
WHERE ed.coco = l.coco
;
EXCEPTION
WHEN NO_DATA_FOUND THEN
dbms_output.put_line ('NO_DATA_FOUND');
WHEN OTHERS THEN
dbms_output.put_line ('Exception de traitement ' || SQLERRM);
END;
END LOOP;
END;
问题似乎在这里WHERE ed.coco = l.coco
我收到错误: Exception de traitement ORA-01008:并非所有变量都绑定 [ ==>修改后发布消息]
我收到错误: ORA-01008:并非所有变量都绑定
当我使用alter session set "_subquery_pruning_enabled"=false;
时,一切正常,但表现不好。
我正在使用Oracle数据库11g(11.2.0.4.0)。
答案 0 :(得分:1)
看起来你可能遇到了一个错误。 看一看: https://community.oracle.com/thread/3894065?start=30&tstart=0
在某些情况下,优化程序会调用kkpap来执行分区 在编译时修剪。有时分区修剪由
完成 针对表运行子查询。如果绑定变量值为
运行这些子查询需要我们不能在修剪 编译时间。 错误14458214的修复程序修复了此问题,用于子查询用于在分区级别修剪的情况。但是,它是
可能我们在分区级别使用其他方法然后使用 子分区一级的子查询修剪;这个案子不是 由14458214的修复解决。
答案 1 :(得分:0)
private void travellerListed( Collection o)
当光标中有1个变量时使用LOOP ......不是一个好主意。