2014년 9월 9일 화요일

LONG 컬럼에 넣을 때 메모리를 동적으로 할당받는 예제[오라클개발자교육/오라클/ORACLE강좌/오라클교육잘하는곳/오라클교육추천/ORACLE실무교육/ORACLE/ORACLE교육/ORACLE학원/오라클실무교육]

LONG 컬럼에 넣을 때 메모리를 동적으로 할당받는 예제  
  
  
LONG 컬럼에 넣을 때 메모리를 동적으로 할당받는 예제 
Bulletin no : 10799 
-------------------------------------------------------------------------------- 
PRO*C를 이용하여 LONG 컬럼에 텍스트 화일 등의 데이타를 넣는 예제다. 
Memory Allocation을 dynamic하게 처리한 경우인데, FILESIZE 대신에 실제 
의 화일 크기 등을 이용하여 Memory Allocation을 하면 된다. 

LONG 컬럼을 처리하기 위해서 사용되는 HOST 변수는 다음 예제처럼 EXTERNAL 
DATA TYPE인 LONG VARCHAR 사용해야 한다. 

EXTERNAL DATATYPE은 바로 사용할 수는 없으므로 TYPE 을 선언해서 사용한다. 

LONG 컬럼에 들어 있는 데이타가 작은 경우에는 VARCHAR를 사용해도 처리가 
가능하지만 VARCHAR에서는 .len 필드가 unsinged short 로 선언되어 있기 
때문에 처리 가능한 데이타가 이 값에 제한을 받는다. 

char로 선언하게 되면 INSERT시에는 별 문제가 없지만 SELECT시에는 ORA-932 
에러가 발생하므로 사용할 수가 없다. 


#include 
#define FILESIZE 10000 

typedef struct TAGmy_long { 
 int len; 
 unsigned char arr[1]; 
} my_long; 

VARCHAR  username[20]; 
VARCHAR  password[20]; 
EXEC SQL  TYPE my_long IS LONG VARCHAR(1000000000) REFERENCE; 
EXEC SQL  INCLUDE sqlca; 
my_long *buffer; 

void sqlerror();              /* handles unrecoverable errors    */ 
FILE *fp; 
main() 

      strcpy(username.arr, "SCOTT"); 
      username.len = strlen(username.arr); 
      strcpy(password.arr, "TIGER"); 
      password.len = strlen(password.arr); 

      EXEC SQL WHENEVER SQLERROR DO sqlerror(); 
      EXEC SQL CONNECT :username IDENTIFIED BY :password; 
      EXEC SQL WHENEVER SQLERROR DO sqlerror(); 

      buffer = (my_long *)malloc(sizeof(my_long)+FILESIZE); 
  
      fp=fopen("longtest.txt","r"); 
      fread(buffer->arr, 1, FILESIZE, fp); 
      buffer->len = FILESIZE; 
      
      EXEC SQL INSERT INTO LONGTEST VALUES (:buffer); 
      EXEC SQL COMMIT WORK RELEASE; 

void sqlerror() 

  EXEC SQL WHENEVER SQLERROR CONTINUE; 
  printf("\nORACLE error detected:\n"); 
  printf("\n% .70s \n", sqlca.sqlerrm.sqlerrmc); 
  EXEC SQL ROLLBACK WORK RELEASE; 
  exit(1); 








 기업100%환급/오라클/자바/스프링/안드로이드/닷넷C#/jQUERY개발… 오라클자바…12-271786
 [채용예정교육]오라클자바개발잘하는신입뽑기2개월과정,교육전취…오라클자바…12-111302
53 [평일주간]100%환급6건,안드로이드,자바,C#,스프링3.2,SQL,힌트/… 오라클자바…03-151043
52 [주말주간]C#, ASP.NET마스터 오라클자바…01-311201
51 [평일,기업100%환급]SQL기초에서 Schema Object까지 오라클자바…01-311001
50 [평일야간]HTML5, CSS3,Ajax, jQuery마스터과정 오라클자바…01-31900
49 [평일주간,평일야간,주말]Spring,MyBatis,Hibernate개발자과정 오라클자바…01-191202
48 [평일주간,평일야간,주말]안드로이드개발자과정 오라클자바…01-111067
47 [평일야간,주말주간]JAVA,Network&WEB&Framework 오라클자바…01-031546
46 기업100%환급/오라클/자바/스프링/안드로이드/닷넷C#/jQUERY개발… 오라클자바…12-271786
45 [평일야간,주말]자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis… 오라클자바…12-191314
44 웹퍼블리싱 마스터(HTML5,CSS3,jQUERY,AJAX,JavaScript) 오라클자바…12-141305
43 [채용예정교육]오라클자바개발잘하는신입뽑기2개월과정,교육전취… 오라클자바…12-111302
42 [평일,기업100%환급]자바기초에서 JDBC, Servlet/JSP까지 오라클자바…12-091045
41 [평일야간]닷넷(C#,Network,ADO.NET,ASP.NET)마스터 오라클자바…12-011210
40 [기업100%환급]C#4.0,WinForm,ADO.NET프로그래밍(평일주간(단기)… 오라클자바…12-011419
39 [평일야간,주말,주말야간]SQL기초에서실무까지(SQL기초,PLSQL,힌… 오라클자바…12-01920

댓글 없음:

댓글 쓰기