Rowid in cursor
hi ,
I am using rowid in cursor. the code is running fine while run at sample test table which having 40k data but while
runing it on production table which having data 190 million records of data.it shoiwng error
Thanks all in advance.& pls also suggest how to tune this proc.
Error starting at line 1 in command:
begin
UPDATE_PROC_RJ_NOV;
end;
Error report:
ORA-01410: invalid ROWID
ORA-06512: at "CDR.UPDATE_PROC_RJ_NOV", line 16
ORA-06512: at line 2
01410. 00000 - "invalid ROWID"
*Cause:
*Action:
code :
create or replace PROCEDURE UPDATE_PROC_RJ_NOV AS
CURSOR REC_CUR IS
SELECT ROWID,SUBSTR(CALLING_NO,-10),DECODE(LAST_CELL_ID,'-',FIRST_CELL_ID,LAST_CELL_ID) FROM RJ_CDMA_CDR_NOV;
TYPE R_NO_T IS TABLE OF VARCHAR2(4000);
TYPE CALLING_NO_T IS TABLE OF VARCHAR2(4000);
R_NO R_NO_T;
CALLING_NUM CALLING_NO_T;
BTS_TAB CALLING_NO_T;
L NUMBER(38);
CALLING_NO_TAB VARCHAR2(40);
BEGIN
OPEN REC_CUR;
LOOP
FETCH REC_CUR BULK COLLECT INTO R_NO,CALLING_NUM,BTS_TAB LIMIT 1000;
EXIT WHEN R_NO.COUNT() = 0;
FORALL I IN R_NO.FIRST .. R_NO.LAST
UPDATE TEST
SET BTS = BTS_TAB(I),
NEW_CALLING_NO=CALLING_NUM(I)
WHERE ROWID=R_NO(I);
COMMIT;
END LOOP;
CLOSE REC_CUR;
END;