반응형

    PART 1. Pro*C 개요

    1장. Pro*C 소개와 기본 특징

    2장. Pro*C 오류 진단과 처리

    2-1 SQLCA

     

    2-2 ORACA

     

    2-3 오류 검출 및 처리 

     

    1. 명시적 오류 처리

    - SQL 문장시마다 오류 처리 구문을 지정하여 오류를 처리

    - SQLCA 구조체의 멤버인 sqlcode 를 총하여 확인 가능 

    - 단점 : 발생가능한 오류 처리가 누락되어, 운영중에 에러로 연결될수 있다.

     

    2. 묵시적 오류 처리

    - EXEC SQL WHENEVER  구문 사용

    - 전역적 ( 프로그램 시작 전 ) 

    - 지역적 ( 각 함수 별 ) 

    - 모든 오류 상황에 특정한 라벨을 지정해서 처리합니다. 

    - 간단하게 사용가능하나, 특정 오류에 대한 개별 오류 처리가 불가능합니다.

     


    PART 2. Pro*C 프로그램 구성과 컴파일 환경

    3장. Pro*C 프로그램 구성

    3-1 어플리케이션 프롤로그

     

    1. 선언 절 

    - 호스트변수 : SQL 문과 프로그램문 모두에서 참조되어 사용 

    - :표지 변수 :호스트 변수,  1:1로 대응하는 변수로서, 호스트변수의 값이 NULL 인지를 확인

     

    1) short 형으로 선언 후  -1 값을 저장하면, null 값으로 지정됩니다.

    2) sql 문장에서 호스트변수 : 지시자 변수 (호스트 변언어 문장에서는 표지 변수로만 사용이 가능, 데이터 값을 획득할수 없음)

    3) NVL 함수보다 성능이 개선되고 사용범위가 훨씬 더 넓습니다.

     

    2. INCLUDE 절 

    - 프로그램 안에서 사용될 함수, 선언문, 각종 ALIAS가 정리되어 있는 요약 파일로서, 시스템과 사용자가 이를 사용

    PRO*C 프로그램의 필수요소인 SQLCA 를 사용하기 위해 참조해서 사용합니다.

     

     

    3. CONNECT 문 

     

    - 지역 DB 접속

     ex) EXEC SQL CONNECT : uid IDENTIFEID BY :pwd;

     

    프로그램 개발 및 운영장비에 DBMS 가 설치되어 있거나, TNS 를 자동으로 읽어서 DBMS로 접속하는 방식

    보통 회사에서는 데이터베이스 서버와 AP 서버가 분리되어 있습니다.

     

    지역 데이터 베이스 접속 방식을 유지하면서 원격지에 접속하고자 하는 경우에는 다음과 같은 절차를 따릅니다.

     

    ① client의 tnsname.ora 파일에 아래의 TNS 명 추가 

     

    SV =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.70.184)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = ORCL)
        )
      )

     

    ② TNSPING을 통해 정보 확인

    cmd > tnsping sv 

     

    ③ 접속

    cmd > sqlplus scott/1234@sv

     

    ex ) 계정이 LOCK 걸려 있을 때 :

    본서버에서 SCOTT 계정의 락을 풀어준다.

    ALTER USER scott ACCOUNT UNLOCK

     

    ④ sv 를 기본 서버 접속 서버로 설정

     

    linux : .profile 에 아래의 코드를 추가합니다.

    export TWO_TASK = real

    windowx : 

    cmd > set local = sv  

     

    - 외부 DB 접속

     ex) EXEC SQL CONNECT : uid IDENTIFEID BY :pwd USING :tns;

     

    - 여러 DB 접속 ( TNS 이용 )

    tnsnames.ora 파일에 여러개의 데이터베이스 서보의 정보 기술한 후 데이터 베이스 링크를 생성하여 작업 처리

     

    4. 트랜잭션 제어

     

    - 오라클 데이터베이스는 DML 문장 사용후, 데이터 변경을 제어하기 위해 사용자에 의해

    COMMIT 또는 ROLLBACK 문장을 수행해야 합니다. ( 명시하지 않을경우 비정상 종료로 인식 )

    1) EXEC SQL COMMIT [WORK] [RELEASE] ; // 영구적인 갱신 , RELEASE : 접속 해제

    2) EXEC SQL ROLLBACK [WORK] [RELEASE] ; //갱신작업을 복구

     

    - 보통은 전체 문장에 대한 ROLLBACK 만 지원하므로, 특정부분까지 ROLLBACK 하기위하여 각 DML문장에 대한 SAVE POINT 지정,

    이때 ROLLBACK 시, 지정된 POINT 까지 ROLLBACK 가능

    3) EXEC SQL SAVEPOINT [WORK] {point} ; 

    4) EXEC SQL ROLLBACK TO SAVEPOINT {point} ;

     

    3-2 어플리케이션 본체

     

    - 자료 추출, 갱신하는 실제 프로그래밍을 기술하는 부분입니다.

    EXEC SQL + SQL 문장 사용


    4장. 컴파일 환경 구축 

    4-1 Pre 컴파일 ( 외부,내부 지정방식)

    외부 : Makefile 작성

    내부 : 프로그램 내부에 직접 기술

    test.pc -> test.c

     

    4-2 C 컴파일 

     

    1. cc -c 컴파일

    test.c -> test.o

     

    2. cc- o 컴파일

    test.o -> test 실행 파일

    ./test

     

    3. 쉘을 활용한 컴파일 ( 한번 해보기 )

    make 파일이 아닌 make를 수행할 수 있는 쉘을 만들어 사용합니다.

    why? 눈에 잘 안들어옴, 단계별로 기술하는 방식이 아니라 ALIAS 로 지정하고 통합하는 형태, 변경하기 어려움.

     

    stddef.h 파일에 INCLUDE 로 다 넣어줬지만, 쉘에다가 다 넣어줄수 있음.

    다른사람의 컴퓨터에 접속할때 환경변수 수정못하니까, 이럴때 좋을듯..?  

     

    (1) mk 파일에 컴파일 과정의 단계별 처리과정을 저장 합니다.

    make -nf demo_proc sample1 > mk

     

    (2) 컴파일과 상관없는 라인 삭제

    (3) 1% 부족 - sample1 부분 수정 

     

     

     

     

    반응형
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기