2014년 9월 22일 월요일

Pro*C에서의 에러처리에 관하여(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-271961
 [채용예정교육]오라클자바개발잘하는신입뽑기2개월과정,교육전취…오라클자바…12-111440
53 [평일주간]100%환급6건,안드로이드,자바,C#,스프링3.2,SQL,힌트/… 오라클자바…03-151197
52 [주말주간]C#, ASP.NET마스터 오라클자바…01-311359
51 [평일,기업100%환급]SQL기초에서 Schema Object까지 오라클자바…01-311139
50 [평일야간]HTML5, CSS3,Ajax, jQuery마스터과정 오라클자바…01-311046
49 [평일주간,평일야간,주말]Spring,MyBatis,Hibernate개발자과정 오라클자바…01-191359
48 [평일주간,평일야간,주말]안드로이드개발자과정 오라클자바…01-111192
47 [평일야간,주말주간]JAVA,Network&JSP&Spring,MyBatis,Hibernate 오라클자바…01-031696
46 기업100%환급/오라클/자바/스프링/안드로이드/닷넷C#/웹퍼블리싱… 오라클자바…12-271961
45 [평일야간,주말]자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis… 오라클자바…12-191462
44 웹퍼블리싱 마스터(HTML5,CSS3,jQUERY,AJAX,JavaScript) 오라클자바…12-141428
43 [채용예정교육]오라클자바개발잘하는신입뽑기2개월과정,교육전취… 오라클자바…12-111440
42 [평일,기업100%환급]자바기초에서 JDBC, Servlet/JSP까지 오라클자바…12-091158
41 [평일야간]닷넷(C#,Network,ADO.NET,ASP.NET)마스터 오라클자바…12-011354
40 [기업100%환급]C#4.0,WinForm,ADO.NET프로그래밍(평일주간(단기)… 오라클자바…12-011519
39 [평일야간,주말]SQL기초에서실무까지(SQL기초,PLSQL,힌트,튜닝) 오라클자바…12-011021

댓글 없음:

댓글 쓰기