밥벌이/데이터베이스

내장(Embedded) SQL

middleware 2010. 9. 10. 09:03
반응형
  • 내장 SQL의 개념
    • 데이터베이스내의 데이터를 정의하거나 접근하는 SQL문을 응용 프로그램 내에서 포함되어 실행될 때 함께 실행되도록 호스트 프로그램 언어에 삽입된 SQL
    • 호스트 프로그램 언어 : PASCAL, COBOL, C, C++, Visual Basic 같은 프로그래밍 언어
       
  • 내장 SQL의 특징
    • 내장 SQL문은 호스트 프로그램 언어에서 실행문이 나타날 수 있는 곳이면 프로그램의 어느 것에서나 사용될 수 있다.
    • 일반 SQL문은 실행 결과로 여러 개의 튜플을 반환하는 반면, 내장 SQL문은 단 하나의 튜플만 반환
    • 내장 SQL문에 의해 반환되는 튜플은 일반 변수를 사용하여 저장할 수 있음
    • 호스트 프로그램의 컴파일 시 선행 처리기(Preprocessor)에 의해 분리되어 컴파일됨
    • 호스트 프로그램 변수와 데이터베이스 필드의 이름은 같아도 됨
    • 내장 SQL 문의 호스트 프로그램 변수의 데이터 타입은 이에 대응하는 데이터베이스 필드의 SQL 데이터 타입과 일치하여야 함
    • 내장 SQL 문이 실행되면 SQL 실행의 상태가 SQL 상태 변수에 전달 : 내장 SQL문이 실행된 후 SQLSTATE(또는 SQLCODE)라는 묵시적 SQL 상태 변수에 성공, 실패, 오류 등의 실행 결과를 문자열(또는 정수)값으로 전달
       
  • 내장 SQL과 호스트 언어의 실행문의 구별
    • 명령문 구분
      • 내장 SQL문을 선행 처리기가 식별할 수 있도록 하기 위해 다음과 같은 형식을 사용
        EXEC SQL<내장 SQL문> END-EXEC
      • 내장 SQL문의 사용은 SQL이 삽입될 호스트 언어에 따라 다름
        • C/C++ 언어에서는 END-EXEC 대신에 세미콜론(;) 사용
        • JAVA언어에서는 다음과 같은 형식을 사용
          #SQL { <내장 SQL문> };
    • 변수의 구분
      • 내장 SQL문에서 사용하는 호스트 변수는 변수 앞에 콜론(:) 문자를 붙임
      • 호스트 언어 내에서 호스트 변수는 콜론(:)없이 그대로 사용
    • 호스트 언어 C에서 내장 SQL사용 예
       
  • 커서(Cursor)
    • 커서는 내장 SQL문의 실행 결과로 반환될 수 있는 복수개의 튜플들이 접근할 수 있도록 해주는 개념
    • 커서는 SQL 실행 결과로 반환되는 테이블의 튜플들을 순서대로 가리키는 튜플에 대한 포인터로 생각할 수 있음
    • 커서를 사용하여 질의 결과로 반환될 수 있는 튜플들을 한번에 하나씩 차례로 처리할 수 있음
    • 커서 관련 명령어
      • DECLARE : 커서를 정의하는 등 커서에 관련된 선언을 하는 명령어
      • OPEN : 커서가 질의 결과의 첫 번째 튜플을 포인트하도록 설정하는 명령어
      • FETCH : 질의 결과의 튜플들 중 현재의 다음 튜플로 커서를 이동시키는 명령어
      • CLOSE : 질의 실행 결과에 대한 처리 종료 시 커서를 닫기 위해 사용하는 명령어
    • 호스트 언어에서 내장 SQL의 커서 사용 예
         
  • 동적(Dynamic) SQL
    • 동적 SQL은 프로그래머가 특별히 대화식 온라인 응용 프로그램의 작성을 위해 필요한 SQL문을 동적으로 만들어 바인드(bind)함으로써 실행시킬 수 있는 기능을 지원
    • 동적 SQL문 관련 명령어
      • PREPARE 문 : 동적으로 주어진 SQL문을 예비 컴파일하고 바인드 해서 기계어 코드를 생성
      • EXECUTE 문 : 기계어 코드 SQL문을 실제로 실행
    • C 호스트 언어 내에 동적 SQL 호출 사용 예
반응형