ORA-01008:数据库升级后并非所有变量都绑定

时间:2016-06-07 10:39:12

标签: oracle plsql oracle11g

我遇到了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)。

2 个答案:

答案 0 :(得分:1)

看起来你可能遇到了一个错误。 看一看: https://community.oracle.com/thread/3894065?start=30&tstart=0

  

在某些情况下,优化程序会调用kkpap来执行分区   在编译时修剪。有时分区修剪由
完成   针对表运行子查询。如果绑定变量值为
  运行这些子查询需要我们不能在修剪   编译时间。       错误14458214的修复程序修复了此问题,用于子查询用于在分区级别修剪的情况。但是,它是
  可能我们在分区级别使用其他方法然后使用   子分区一级的子查询修剪;这个案子不是   由14458214的修复解决。

答案 1 :(得分:0)

private void travellerListed( Collection o)

当光标中有1个变量时使用LOOP ......不是一个好主意。