(ORACLE PLSQL)오라클 EXCEPTION으로 CATCH(ORA-00942, ORA-06550, "table or view does
not exist")
create or replace procedure deleteTable
is
notfoundtable EXCEPTION;
PRAGMA EXCEPTION_INIT
(notfoundtable, -942);
BEGIN
DELETE FROM onj;
EXCEPTION
WHEN notfoundtable THEN NULL;
DBMS_OUTPUT.PUT_LINE(SQLCODE
|| ' ** ' || SQLERRM);
END;
/
[오류 메시지]
DELETE FROM
ex1;
*
ERROR at line 10:
ORA-06550: line 10,
column 23:
PL/SQL: ORA-00942: table or view does not exist
ORA-06550:
line 10, column 11:
PL/SQL: SQL Statement ignored
위 오류는 컴파일 시점에
발생하는 오류이기 때문에 EXCEPTION절로 잡을 수가 없다.
이를 잡아내기 위해서는 동적SQL로 만들어 런타임 오류로 잡아야 한다.
PL/SQL EXCEPTION구문으로 잡을 수 있는것은 런타임 오류임을 명심하자.
[해결방법]
SQL> create or replace procedure deleteTable
is
notfoundtable EXCEPTION;
PRAGMA EXCEPTION_INIT
(notfoundtable, -942);
BEGIN
--DELETE FROM onj;
EXECUTE IMMEDIATE 'DELETE FROM onj';
EXCEPTION
WHEN notfoundtable THEN NULL;
DBMS_OUTPUT.PUT_LINE(SQLCODE || ' ** '
|| SQLERRM);
10 END;
11 /
Procedure created.
SQL>
exec DELETEONJ;
PL/SQL procedure successfully completed.
SQL>
set serveroutput on
SQL> exec DELETEONJ;
-942 ** ORA-00942: table or
view does not exist
2014년 1월 15일 수요일
(ORACLE PLSQL)오라클 EXCEPTION으로 CATCH(ORA-00942, ORA-06550, "table or view does not exist") create or replace procedure deleteTable is notfoundtable EXCEPTION; PRAGMA EXCEPTION_INIT (notfoundtable, -942); BEGIN DELETE FROM onj; EXCEPTION WHEN notfoundtable THEN NULL; DBMS_OUTPUT.PUT_LINE(SQLCODE || ' ** ' || SQLERRM); END; / [오류 메시지] DELETE FROM ex1; * ERROR at line 10: ORA-06550: line 10, column 23: PL/SQL: ORA-00942: table or view does not exist ORA-06550: line 10, column 11: PL/SQL: SQL Statement ignored 위 오류는 컴파일 시점에 발생하는 오류이기 때문에 EXCEPTION절로 잡을 수가 없다. 이를 잡아내기 위해서는 동적SQL로 만들어 런타임 오류로 잡아야 한다. PL/SQL EXCEPTION구문으로 잡을 수 있는것은 런타임 오류임을 명심하자. [해결방법] SQL> create or replace procedure deleteTable is notfoundtable EXCEPTION; PRAGMA EXCEPTION_INIT (notfoundtable, -942); BEGIN --DELETE FROM onj; EXECUTE IMMEDIATE 'DELETE FROM onj'; EXCEPTION WHEN notfoundtable THEN NULL; DBMS_OUTPUT.PUT_LINE(SQLCODE || ' ** ' || SQLERRM); 10 END; 11 / Procedure created. SQL> exec DELETEONJ; PL/SQL procedure successfully completed. SQL> set serveroutput on SQL> exec DELETEONJ; -942 ** ORA-00942: table or view does not exist [출처] 오라클자바커뮤니티 - http://www.oraclejavanew.kr/bbs/board.php?bo_table=LecSQLnPlSql&wr_id=216 자바 오라클/빅데이터 아이폰/안드로이드 닷넷/WPF 표준웹/HTML5 채용/취업무료교육 초보자코스 [기업100%환급]자바기초에서 JDBC, Servlet/JSP까지 총 5일 40시간 01-22 [기업100%환급]Spring ,MyBatis,Hibernate실무과정 총 5일 40시간 02-10 자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지 총 24일 72시간 01-24 Spring3.X, MyBatis, Hibernate실무과정 총 12일 36시간 02-03 Spring3.X, MyBatis, Hibernate실무과정 총 5일 35시간 01-18 자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지 총 10일 70시간 02-15 JAVA&WEB프레임워크실무과정 총 14일 98시간 03-08 [기업100%환급]SQL기초에서 Schema Object까지 총 5일 40시간 01-20 [기업100%환급]PL/SQL,ORACLE HINT,TUNING 총 5일 40시간 02-17 SQL초보에서실전전문가까지 총 18일 54시간 02-11 빅데이터 하둡 실무과정 총 12일 36시간 02-18 SQL초보에서실전전문가까지 총 8일 56시간 01-18 빅데이터 하둡 실무과정 총 5일 35시간 02-15
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기