我有一个名为“GLOBAL_T”的全局临时表(在提交删除行上)和一个将 SYS_REFCURSOR 作为 OUTPUT 参数的存储过程。
所以你可以这样想一个存储过程:
PROCEDURE test (POT_CURSOR OUT SYS_REFCURSOR)
IS
BEGIN
--TO FILL THE GTT, CALL ANOTHER PROCEDURE
--BTW, FOLLOWING PROCEDURE HAS NO COMMIT
A_SCHEMA_NAME.A_PACKAGE_NAME.ANOTHER_PROCEDURE();
OPEN POT_CURSOR FOR
SELECT STH FROM GLOBAL_T, BUNCH_OF_OTHER_TABLES B
WHERE B.BLABLA = GLOBAL_T.BLABLA
AND B.BUNCH_OF_OTHER_COLUMNS = T.OTHER_COLUMNS;
END;
问题是当我在 pl/sql 块中调用该过程时,它工作正常。但是当我从 .NET 调用该过程时,它给了我ORA-08103:对象不再存在
调用完全相同。由于程序背后的业务逻辑非常庞大,我试图简化它们。