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!

ORA-08103: object no longer exists

734241Mar 2 2011 — edited Mar 2 2011
Hi,

When i tried to run below code then sometimes it gives me error
'ORA-08103: object no longer exists "
Please help ....

for i in 2..12
loop
ii := 14-i;
jj := ii-1;
--dbms_output.put_line('2: '||(jj));
if (jj = 1) then
str := 'select UPLOAD_DATE,ASSET_COUNT ,rowid from HW_INVENTORY_COUNT';
--dbms_output.put_line('8');
open cur_son for str;
loop
fetch cur_son BULK COLLECT into v_week_date , v_WEEK_ASSETCOUNT,v_rowid limit 200;
for j in v_week_date.first..v_week_date.last
loop
str1 := 'update HW_INVENTORY_COUNT inv
set inv.WEEK'||ii||'_DATE = '''||v_week_date(j)||''' ,
inv.WEEK'||ii||'_ASSETCOUNT = '||v_WEEK_ASSETCOUNT(j)||'
where rowid ='||''''||v_rowid(j)||'''';
--dbms_output.put_line('tracing 1:- '||str1);
execute immediate str1;
end loop;--
--dbms_output.put_line('9');
EXIT WHEN cur_son%NOTFOUND;
END LOOP;
CLOSE cur_son;
--########## ADDED ON 18-FEB-2010 #########
-- update HW_INVENTORY_COUNT set ASSET_COUNT = 0; -- duplicate data issue
update HW_INVENTORY_COUNT
set ASSET_COUNT = 0,
UPLOAD_DATE = trunc(sysdate),
DATE_ID = caldate_id;
--########## ADDED ON 18-FEB-2010 #########
else
execute immediate 'select count(WEEK'||jj||'_DATE) from HW_INVENTORY_COUNT'into cnt ;
if (cnt <= 0) then
--dbms_output.put_line('3');
goto x;
else

str := 'select WEEK'||jj||'_DATE ,WEEK'||jj||'_ASSETCOUNT,rowid from HW_INVENTORY_COUNT';
--dbms_output.put_line('4');
open cur_son for str;
loop
fetch cur_son BULK COLLECT into v_week_date , v_WEEK_ASSETCOUNT,v_rowid limit 200;
--dbms_output.put_line('5');
/*execute immediate 'forall j in '||v_week_date.first||'..'||v_week_date.last||'
update HW_INVENTORY_COUNT inv
set inv.WEEK'||ii||'_DATE = '||v_week_dat(j)||' ,
inv.WEEK'||ii||'_ASSETCOUNT = '||v_week_dat(j)||'
where rowid = '||v_rowid(j);*/
for j in v_week_date.first..v_week_date.last
loop
--commit;
/*dbms_output.put_line(v_week_date(j));
--dbms_output.put_line(v_WEEK_ASSETCOUNT(j));*/

-- str1 := 'update HW_INVENTORY_COUNT inv
-- set inv.WEEK'||ii||'_DATE = '''||v_week_date(j)||''' ,
-- inv.WEEK'||ii||'_ASSETCOUNT = '||v_WEEK_ASSETCOUNT(j)||'
-- where rowid ='||''''||v_rowid(j)||'''';
--
-- execute immediate str1;
if (v_WEEK_ASSETCOUNT(j) is null) then
--str1 := 'update HW_DATA_QUALITY_COUNT inv -- change on 01-feb-10
str1 := 'update HW_INVENTORY_COUNT inv
set inv.WEEK'||ii||'_DATE = '''||v_week_date(j)||''' ,
inv.WEEK'||ii||'_ASSETCOUNT = NULL
where rowid ='||''''||v_rowid(j)||'''';
--dbms_output.put_line(v_rowid(j));
execute immediate str1;
else

--str1 := 'update HW_DATA_QUALITY_COUNT inv -- change on 01-feb-10
str1 := 'update HW_INVENTORY_COUNT inv
set inv.WEEK'||ii||'_DATE = '''||v_week_date(j)||''' ,
inv.WEEK'||ii||'_ASSETCOUNT = '||v_WEEK_ASSETCOUNT(j)||'
where rowid ='||''''||v_rowid(j)||'''';
-- dbms_output.put_line('tracing'||J);
--dbms_output.put_line('tracing'||str1);
execute immediate str1;
end if;

/* --dbms_output.put_line(v_rowid(j));*/

end loop;--
--dbms_output.put_line(str1);
--dbms_output.put_line('6');
EXIT WHEN cur_son%NOTFOUND;
END LOOP;
CLOSE cur_son;
end if;
end if;
<<x>>
cnt:=0;
--dbms_output.put_line('7');
end loop;
<<y>>

Thanks You,
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Mar 30 2011
Added on Mar 2 2011
9 comments
606 views