从sys_refcursor发出填充TEMP_TABLE的问题

时间:2014-09-05 17:04:48

标签: sql oracle stored-procedures

我在Oracle SQL中有两个过程。一个打开一个sys_refcursor(作为out参数)并从一个大表中获取数据(通过SELECT语句)并进行一些过滤,得到一个所需的结果集。现在我想要做的是通过全局临时表保留该数据以用于另一个过程(最终目标是将两个过程打包)。下面是我的第二个过程的代码,其中我从第二个过程运行第一个过程,然后从第一个过程中的sys_refcursor获取以填充我的临时表。

create or replace PROCEDURE TEST_PROCEDURE (
STARTD DATE, ENDD DATE, TID VARCHAR2) AS 
L_RC SYS_REFCURSOR;
L_REC TEMP_TABLE%ROWTYPE;
BEGIN
   FILTER_DATA_WITH_PEAK(L_RC, STARTD, ENDD, TID);
   LOOP
      FETCH L_RC
        INTO L_REC;
      EXIT WHEN L_RC%NOTFOUND;
      INSERT INTO TEMP_TABLE(STARTDATE, ENDDATE, ATTRIBUTE_TXGRID, ATTRIBUTE_PNOM,
      ATTRIBUTE_QNOM, INTERVALVALUE) VALUES 
      (L_REC.STARTDATE, L_REC.ENDDATE, L_REC.ATTRIBUTE_TXGRID, 
      L_REC.ATTRIBUTE_PNOM, L_REC.ATTRIBUTE_QNOM, L_REC.INTERVALVALUE);
    END LOOP;
    CLOSE L_RC;
END TEST_PROCEDURE;

问题在于,即使此代码保存没有错误并且运行没有错误,我的临时表仍然是空的。我的代码必须有一些细微的问题,特别是因为如果我用dbms_output.put_line命令将整个插入替换为...命令,则会显示正确的数据,所以我知道我正确地获取数据...

非常感谢任何帮助。

0 个答案:

没有答案