Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Rowid in cursor

user10648897Dec 2 2010 — edited Dec 2 2010
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;
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Dec 30 2010
Added on Dec 2 2010
3 comments
3,340 views