정보과학 IT

Oracle Pro*C, MSVC++ 예제 01 : 1행 조회

물곰탱이 2013. 11. 27. 16:27

Oracle Pro*C, MSVC++ 예제 01 : 1행 조회 

 

 

//===============================================================
// PC001.PC
// PROC : 1행 조회 : Select Count
// SKY 2013-11-27
//===============================================================

#include <stdio.h>
#include <stdlib.h>
#include <sqlca.h>
//EXEC SQL INCLUDE SQLCA; (#include <sqlca.h>와 동일)

//int main(int argc, char **argv)
int main() {
    EXEC SQL BEGIN DECLARE SECTION;
            char dbconn[50] = "lbah_home/lbahtech@LBAH";
            int cntrow = 0;
    EXEC SQL END DECLARE SECTION;

    printf("================================================== \n");
    printf("★ Oracle Pro*C ★ Microsoft Visual C++ ★ SKY!! ★\n");
    printf("PC001.PC ▶ 1행 조회 : Select Count \n");
    printf("DB접속 ▶ dbconn : %s \n",dbconn);
    printf("================================================== \n");
   
 printf("sqlca.sqlcode : 최초값 ----- %d ----- \n", sqlca.sqlcode);
 printf("sqlca.sqlerrm.sqlerrmc : 최초값 ----- %s ----- \n", sqlca.sqlerrm.sqlerrmc);
 
    EXEC SQL CONNECT :dbconn;
 
 printf("sqlca.sqlcode : CONNECT 후 ----- %d ----- \n", sqlca.sqlcode);
 printf("sqlca.sqlerrm.sqlerrmc : CONNECT 후 ----- %s ----- \n", sqlca.sqlerrm.sqlerrmc);
  
 if(sqlca.sqlcode < 0) {
  printf("작업 실패 ! ErrorCode(%d) : %s ----- \n", sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc);
  //EXEC SQL ROLLBACK WORK RELEASE;
  exit(0);
 }

    EXEC SQL SELECT count(*)
            INTO :cntrow 
            FROM ATB_STT
   WHERE AAA > '20'
   //WHERE AAA > '99'
   ;

    printf("sqlca.sqlcode : SELECT 후 ----- %d ----- \n", sqlca.sqlcode);
 printf("sqlca.sqlerrm.sqlerrmc : SELECT 후 ----- %s ----- \n", sqlca.sqlerrm.sqlerrmc);

 if(sqlca.sqlcode < 0) {
  printf("작업 실패 ! ErrorCode(%d) : %s ----- \n", sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc);
  EXEC SQL ROLLBACK WORK RELEASE;
  exit(0);
 }

    printf("-------------------------------------------------- \n");
    printf("ATB_STT 테이블 행(Row)수 : %d 행\n", cntrow);
    printf("-------------------------------------------------- \n");
   
 EXEC SQL COMMIT WORK RELEASE;
 
 printf("sqlca.sqlcode : COMMIT 후 ----- %d ----- \n", sqlca.sqlcode);
 printf("sqlca.sqlerrm.sqlerrmc : COMMIT 후 ----- %s ----- \n", sqlca.sqlerrm.sqlerrmc);
 
 if(sqlca.sqlcode < 0) {
  printf("작업 실패 ! ErrorCode(%d) : %s ----- \n", sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc);
  EXEC SQL ROLLBACK WORK RELEASE;
  exit(0);
 }

 printf("작업 완료 !!! ============================= SKY == \n");
    printf("================================================== \n");
    return 0;
}

 

 

 

//===============================================================
// PC002.PC
// PROC : 1행 조회 : Select 1 Row
// SKY 2013-11-27
//===============================================================

#include <stdio.h>
#include <stdlib.h>
#include <sqlca.h>
//EXEC SQL INCLUDE SQLCA; (#include <sqlca.h>와 동일)

//int main(int argc, char **argv)
int main() {
    EXEC SQL BEGIN DECLARE SECTION;
            char dbconn[50] = "lbah_home/lbahtech@LBAH";
   VARCHAR aaaaa[2];
   VARCHAR bbbbb[3];
   int ddddd;
    EXEC SQL END DECLARE SECTION;

    printf("================================================== \n");
    printf("★ Oracle Pro*C ★ Microsoft Visual C++ ★ SKY!! ★\n");
    printf("PC002.PC ▶ 1행 조회 : Select 1 Row \n");
    printf("DB접속 ▶ dbconn : %s \n",dbconn);
    printf("================================================== \n");
   
 printf("sqlca.sqlcode : 최초값 ----- %d ----- \n", sqlca.sqlcode);
 printf("sqlca.sqlerrm.sqlerrmc : 최초값 ----- %s ----- \n", sqlca.sqlerrm.sqlerrmc);
 
    EXEC SQL CONNECT :dbconn;

 printf("sqlca.sqlcode : CONNECT 후 ----- %d ----- \n", sqlca.sqlcode);
 printf("sqlca.sqlerrm.sqlerrmc : CONNECT 후 ----- %s ----- \n", sqlca.sqlerrm.sqlerrmc);
  
 if(sqlca.sqlcode < 0) {
  printf("작업 실패 ! ErrorCode(%d) : %s ----- \n", sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc);
  //EXEC SQL ROLLBACK WORK RELEASE;
  exit(0);
 }

   
 EXEC SQL SELECT AAA, BBB, DDD
   INTO :aaaaa, :bbbbb, :ddddd
            FROM ATB_STT
   WHERE ROWNUM = 1
   //WHERE AAA > '20'
   //WHERE AAA > '99'
   ;

    printf("sqlca.sqlcode : SELECT 후 ----- %d ----- \n", sqlca.sqlcode);
 printf("sqlca.sqlerrm.sqlerrmc : SELECT 후 ----- %s ----- \n", sqlca.sqlerrm.sqlerrmc);

 if(sqlca.sqlcode == -2112) {
  printf("작업 실패 ! 두 행 이상 ----- \n");
  //EXEC SQL ROLLBACK WORK RELEASE;
  //exit(0);
 }
 if(sqlca.sqlcode == 1403) {
  printf("작업 실패 ! 한 행도 없음 ----- \n");
  //EXEC SQL ROLLBACK WORK RELEASE;
  //exit(0);
 }
 if(sqlca.sqlcode != 0) {
  printf("작업 실패 ! ErrorCode(%d) : %s ----- \n", sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc);
  EXEC SQL ROLLBACK WORK RELEASE;
  exit(0);
 }

    printf("-------------------------------------------------- \n");
    //printf("AAA컬럼 : [%s], BBB컬럼 : [%s], DDD컬럼 : [%s] \n", aaaaa,bbbbb,ddddd);
    printf("AAA컬럼 : [%s], BBB컬럼 : [%s], DDD컬럼 : [%d] \n", aaaaa.arr,bbbbb.arr,ddddd);
    printf("-------------------------------------------------- \n");
   
 EXEC SQL COMMIT WORK RELEASE;
 
 printf("sqlca.sqlcode : COMMIT 후 ----- %d ----- \n", sqlca.sqlcode);
 printf("sqlca.sqlerrm.sqlerrmc : COMMIT 후 ----- %s ----- \n", sqlca.sqlerrm.sqlerrmc);
 
    if(sqlca.sqlcode < 0) {
  printf("작업 실패 ! ErrorCode(%d) : %s ----- \n", sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc);
  EXEC SQL ROLLBACK WORK RELEASE;
  exit(0);
 }

 printf("작업 완료 !!! ============================= SKY == \n");
    printf("================================================== \n");
    return 0;
}