I have Oracle procedure which does the same work as following:
create or replace
PROCEDURE My_TEST_PROCEDURE
(
cur out sys_refcursor
)
AS
BEGIN
open cur for
SELECT * FROM MYTABLE1
WHERE MYTABLE1.SOMEROWNAME NOT IN
(SELECT SOMEROWNAME FROM MYTABLE2);
END My_TEST_PROCEDURE;
But there are a lot of data in this two tables, approximately 300000 rows in each. So it takes a plenty of time to finish. What can I do to decrease that amount of time. I have tried declaring a sys_refcursor and reading data into this cursor as following:
create or replace
PROCEDURE My_TEST_PROCEDURE
(
cur out sys_refcursor
)
IS
DECLARE EXISTING_ITEMS SYS_REFCURSOR;
BEGIN
OPEN EXISTING_ITEMS FOR
SELECT SOMEROWNAME FROM MYTABLE2;
open cur for
SELECT * FROM MYTABLE1
WHERE MYTABLE1.SOMEROWNAME NOT IN
EXISTING_ITEMS;
END My_TEST_PROCEDURE;
But this time ORA-00932 error occurs. What can I do?
Thanks in advance.
Use a query with join like below: