본문 바로가기

C-Language/Pro C, Host Variable

Pro C, Host Variable example

Pro C에서 호스트 변수를 선언하고 사용하는 예

Host변수는 프로그램에서 DB로 데이터를 입력하거나, DB로 부터 출력되는 데이터 저장할 수 있으므로 이용자의 데이터를 오라클에 저장하고, 오라클의 데이터를 이용자에게 보여 주고자 할 때 사용할 수있다.
사용가능한 자료형은 char, char[], short, int, long, float, double, VARCHAR[];

#include <stdio.h>
#include "sqlca.h"

int main(void) {

 EXEC SQL BEGIN DECLARE SECTION;
      /*char *connstr = "scott/ojtit@orcl";*/
     char username[] = "scott";
     VARCHAR password[20];
     char *dbname = "orcl";
 EXEC SQL END DECLARE SECTION;
 
 strcpy((char *)password.arr, "ojtit");
 password.arr[strlen("ojtit")] = '\0';
 password.len = strlen("ojtit");

 /*위와같이 VARCHAR[]형을 호스트변수로 사용할 경우에, 개발자가 직접 그 내용을 할당하는 것은 귀찮은 작업을 몇줄에 걸쳐 해 주어야 한다. 그러나 이 자료형이 SQL문장의 into 절에 사용되면 오라클리 알아서 arr, len 멤버를 초기화하기 때문에 그 다지 불편한 점은 없을 것이다. 다만 arr에 저장된 문자열을 C언어에서 사용하려면 마지막에 '\0'를 추가하는 것이 사용상 펀리할 것이다.*/

 /*EXEC SQL CONNECT :connstr;*/
 EXEC SQL CONNECT :username IDENTIFIED BY :password USING :dbname;
 
 if(sqlca.sqlcode == 0)
 {
  printf("오라클 연결 성공\n");
 }else{
  printf("오류 : 오라클 연결 실패\n");
 }
 
 EXEC SQL ROLLBACK WORK RELEASE;

 printf("프로그램 종료\n");
 return 0; 
  
}



VARCHAR[]형은 Pro C 컴파일러에 의해 다음과 같은 코드로 변환된다.

VARCHAR username[20];
                 
struct
{
    unsigned short len;
    unsigned char arr[20];
} username;