I am trying to do something such as:
for(int i = 0; i<10; i++)
{
for(int j = 0; j<10; j++)
{
Blah;
}
}
//As you can see each time that there is a different i, j starts at 0 again.
Using cursors in Oracle. But if I’m correct, after I fetch all rows from a cursor, it will not restart. Is there a way to do this?
Here is my sql:
CREATE OR REPLACE PROCEDURE SSACHDEV.SyncTeleappWithClientinfo
as
teleCase NUMBER;
CURSOR TeleAppCursor
is
Select
distinct(casenbr)
from TeleApp;
CURSOR ClientInfoCursor
is
Select casenbr
from clientinfo
where trim(cashwithappyn) is null;
BEGIN
open TeleAppCursor;
open ClientInfoCursor;
LOOP
fetch TeleAppCursor into teleCase;
EXIT when TeleAppCursor%NOTFOUND;
LOOP
fetch ClientInfoCursor into clientCase;
EXIT when ClientInfoCursor%NOTFOUND;
if clientCase = teleCase then
update ClientInfo
set cashwithappyn = (select cashwithappyn from teleapp where casenbr = clientCase)
where casenbr = clientCase;
break;
end if;
END LOOP;
END LOOP;
END;
I did check online and was unable to find anything on this.
You don’t need the second cursor at all, just use the set operations in Oracle to update the appropriate records without manually searching for them yourself:
It’s also a good idea to not have variables with the same name as columns.