2014년 10월 1일 수요일

에러처리에 관하여(1)... - 김태양[오라클개발자교육/오라클/ORACLE강좌/오라클교육잘하는곳/오라클교육추천/ORACLE실무교육/ORACLE/ORACLE교육/ORACLE학원/오라클실무교육]

----------- 
에러의 처리 
----------- 
모든 응용프로그램의 가장 중요한 부분중의 하나는 에러 처리가 될것이다. 특히 데이타베이스를  
사용하는 프로그램의 경우 서버가 유저 프로그램과는 별도로 동작하므로 서버와의 통신 및  
데이타베이스의 각종 상태를 이를 통하여 처리해야 함으로 매우 중요한 부분이라 하겠다.  
오라클의 PRE*Compiler를 사용하는 경우 에러처리란 SQL문장의 처리중 발생할수 있는 에러의  
감지및 이의 복구를 의미한다. 이장에서는 오라클의 PRE*Compiler를 사용하는 경우의 에러처리 
방법을 알아보기로 하자. 


1.1 에러 정보의 종류 
오라클의 PRE*Compiler를 통해 얻을수 있는 에러정보는 SQLCA에 있는 변수를 통해서 가능하다.  
모든 SQL문이 수행될때마다 SQLCA에 SQLCODE로 모든 상태정보가 전달된다. 프로그램에서는  
WHENEVER를 이용하여 내부적으로 확인하거나 SQLCODE를 직접 참조하여 이를 확인할수 있다.  
'0'값이 전달되면 오라클이 SQL문장을 에러나 EXCEPTION('NO DATA FOUND', 'TOO MANY ROWS'등  
오라클이 내부적으로 정한 예외 사항 )없이 정상적으로 수행한것을 뜻하며 양수값이 전달되면  
오라클이 문장은 수행하였으나 EXCEPTION이 발생된것을 뜻한다. 만일 음수값이 전달되면 에러에  
의해 문장을 수행할수 없었음을 뜻한다. 이밖에도 SQLWARN으로 전달되는 경고메세지도 마찬가지 
방법으로 참조할수 있으며 다중처리에서 설명된 추출된 로우의 총수를 알수있는 SQLERRD(3)도  
참조할수 있는 에러정보의 일종이다. 

1.2 SQLCA의 사용 
에러정보를 직접 다루어 에러처리를 하기 위해서는 SQLCA 영역의 정보를 사용해야만 한다. 
이 방법을 이용할 경우는 매 SQL 수행후마다 에러처리를 해야만 하지만 그만큼 유연한 코딩이  
가능하다. SQLCA의 선언은 HEADER FILE의 INCLUDE만으로 가능하다. 

EXEC SQL INCLUDE SQLCA; 
이 소스코드는 GLOBAL지역에 선언되어 전코드에서 사용하도록 하고 SQLCA내에 저장되는 정보는 
다음과 같다. 
SQLCA 
SQLCAID "SQLCA"라는 값 
SQLCABC SQLCA 정보의 길이(bytes) 
SQLCODE 오라클 에러메세지 코드 
SQLERRM 에러메세지를 저장하기 위한 레코드 
  SQLERRML 에러메세지의 길이 
  SQLERRMC 에러메세지의 내용 
SQLERRP 
SQLERRD 6가지 상태코드 ARRAY 
  SQLERRD(1) 
  SQLERRD(2) 
  SQLERRD(3) 수행된 로우수 
  SQLERRD(4) 
  SQLERRD(5) 파싱 에러 OFFSET 
  SQLERRD(6)  
SQLWARN 8개의 경고(WARNING) ARRAY 
  SQLWARN(1) 또다른 경고 FLAG 
  SQLWARN(2) 잘려나간(Truncated) 문자열 
  SQLWARN(3)  
  SQLWARN(4) SELECT 목록과 INTO 목록이 다름 
  SQLWARN(5) WHERE절이 없는 UPDATE나 DELETE 
  SQLWARN(6)  
  SQLWARN(7) 
  SQLWARN(8) 
SQLEXT 


 기업100%환급/오라클/자바/스프링/안드로이드/닷넷C#/웹퍼블리싱… 오라클자바…12-272043
 [채용예정교육]오라클자바개발잘하는신입뽑기2개월과정,교육전취…오라클자바…12-111484
53 [평일주간]100%환급6건,안드로이드,자바,C#,스프링3.2,SQL,힌트/… 오라클자바…03-151248
52 [기업100%환급]C#4.0,WinForm,ADO.NET프로그래밍 오라클자바…01-311404
51 [평일,기업100%환급]SQL기초에서 Schema Object까지 오라클자바…01-311273
50 [기업100%환급]Spring ,MyBatis,Hibernate실무과정(스프링개발자… 오라클자바…01-311092
49 [평일주간,평일야간,주말]Spring,MyBatis,Hibernate개발자과정 오라클자바…01-191407
48 [평일주간,평일야간,주말]안드로이드개발자과정 오라클자바…01-111237
47 [평일야간,주말주간,주말야간]JAVA,Network&JSP&Spring,MyBatis,… 오라클자바…01-031733
46 기업100%환급/오라클/자바/스프링/안드로이드/닷넷C#/웹퍼블리싱… 오라클자바…12-272043
45 [기업100%환급,평일주간]자바기초에서 JDBC, Servlet/JSP까지 오라클자바…12-191500
44 [평일야간, 주말]웹퍼블리싱 마스터(HTML5,CSS3,jQUERY,AJAX,Jav… 오라클자바…12-141482
43 [채용예정교육]오라클자바개발잘하는신입뽑기2개월과정,교육전취… 오라클자바…12-111484
42 [평일,기업100%환급]자바기초에서 JDBC, Servlet/JSP까지 오라클자바…12-091189
41 [평일야간, 주말]닷넷(C#,Network,ADO.NET,ASP.NET)마스터 오라클자바…12-011406
40 [기업100%환급]안드로이드개발자과정(Android전액환급교육) 오라클자바…12-011551
39 [평일야간,주말]SQL기초에서실무까지(SQL기초,PLSQL,힌트,튜닝) 오라클자바…12-011057

댓글 없음:

댓글 쓰기