Oracle存储过程需要重新编译才能获取表数据

时间:2012-12-04 10:01:25

标签: oracle recompile

问题:要从我的SP获得结果,我需要每次都重新编译。

SP的目的:从表中的每一行构造XML。

描述:在编译后第一次运行SP后,SP不会返回任何数据,除非重新编译,即使表中有有效行。

我的代码大纲是......

  qry := 'select * from mytable where flag2 = 0 and flag1 = 1';
  qContext := DBMS_XMLGEN.newContext(qry);
  DBMS_XMLGEN.setrowtag(qContext, 'RowFromDB');
  DBMS_XMLGEN.setrowsettag(qContext, 'RowTag');
  dbms_xmlgen.setmaxrows(qContext, 1);  
  retXML := '';

  loop
      tmprowxml := DBMS_XMLGEN.getxml(qContext);      
      exit when dbms_xmlgen.getnumrowsprocessed(qContext) = 0;      
      tmprowxml := replace(tmprowxml, '<?xml version="1.0"?>');                 
      retXML := retXML || tmprowxml;    

      // code to update flag2 to 1          
  end loop;  

  DBMS_XMLGEN.closecontext(qcontext);

  COMMIT;

  return retXML;

欣赏任何指针。

1 个答案:

答案 0 :(得分:0)

您是否在运行之间删除并重新创建表格?很长一段时间,但这会使程序无效。