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!

How to handle ORA-00942: table or view does not exist

795356Dec 22 2010 — edited Dec 22 2010
Hii All,

I'm trying to drop a table dynamically irrespective of its existence in a procedure. Its working fine when table exists but when table doesn't exist I'm facing following error
 ORA-00942: table or view does not exist
I made use of pragma exception_init and modified my code as below
Create or replace Procedure sp_FSASA_FEEDUPLOAD_process
		(
		 p_test_dir			in	varchar2,
		 p_feed_file_name	in	varchar2
		)
is
		l_exttable_str varchar2(32000) ;
		
		l_log_file constant varchar2(200) := 'logfile_rgh.log';
		
		l_table_doesnt_exist Exception;
		
		pragma exception_init(l_table_doesnt_exist,-00492);
		
		
		
Begin
		
		Begin
			execute immediate 'drop table FSASA_FEEDUPLOAD_EXT purge' ;
		Exception
				when l_table_doesnt_exist then
					null;
		
		End;
		
		
		
		
		l_exttable_str := 'Create table FSASA_FEEDUPLOAD_EXT ';
		l_exttable_str := l_exttable_str||' ( ';
		l_exttable_str := l_exttable_str||' Category_No				varchar2(1), ';
		l_exttable_str := l_exttable_str||' Financial_Category		varchar2(300), ';
		l_exttable_str := l_exttable_str||' GFCID					number, ';
		l_exttable_str := l_exttable_str||' Balance					number(34,14), ';
		l_exttable_str := l_exttable_str||' Refernce_no				varchar2(20), ';
		l_exttable_str := l_exttable_str||' Account_no				varchar2(20), ';
		l_exttable_str := l_exttable_str||' ce_trans_id				varchar2(20) ';
		l_exttable_str := l_exttable_str||' ) ';
		l_exttable_str := l_exttable_str||' Organization external ';
		l_exttable_str := l_exttable_str||' ( ';
		l_exttable_str := l_exttable_str||' type				oracle_loader ';
		l_exttable_str := l_exttable_str||' default directory	 '||p_test_dir;
		l_exttable_str := l_exttable_str||' Access parameters ';
		l_exttable_str := l_exttable_str||' ( ';
		l_exttable_str := l_exttable_str||'  records delimited by newline ';
		l_exttable_str := l_exttable_str||'BADFILE '||q'[']'||p_test_dir||q'[']'||':'||q'[']'||'feed.bad '||q'[']' ;
		l_exttable_str := l_exttable_str||'LOGFILE '||q'[']'||p_test_dir||q'[']'||':'||q'[']'||':feed.log '||q'[']' ;
		l_exttable_str := l_exttable_str||q'[FIELDS TERMINATED BY X'09']';
		l_exttable_str := l_exttable_str||' missing field values are null ';
		l_exttable_str := l_exttable_str||')location('||q'[']'||p_feed_file_name||q'[']';
		l_exttable_str := l_exttable_str||')' ;
		l_exttable_str := l_exttable_str||' )Reject limit unlimited ';
		
		dbg_print(l_log_file,'l_exttable_str : '||l_exttable_str);

		
		execute immediate l_exttable_str;


End;
But still I'm unable to get rid of it. Pls help me.

1)I need to drop it as I need to immediately create table with different file name and from different path.

2)The last thing I don't like to do is to check the table name in USER_OBJECTS and then drop.

3)Also suggest me whether creating an external table dynamically is correct approach or not.

4)Till now we were using utl_file for reading feed file but I'm much interested in using EXTERNAL TABLE concept.

5)As the filename and path gets changed I need to create my external table at runtime.

please suggest me whether I can alter my filename and path at runtime
This post has been answered by 6363 on Dec 22 2010
Jump to Answer
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jan 19 2011
Added on Dec 22 2010
7 comments
8,506 views