我在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命令将整个插入替换为...命令,则会显示正确的数据,所以我知道我正确地获取数据...
非常感谢任何帮助。