내장형(Embedded) SQL - 다른 프로그램 내에 삽입된 SQL

2020. 6. 21. 20:00컴퓨터언어/Database

728x90
반응형

 

 

지금까지의 SQL은 모두 사용자가 명령어를 내리는 즉시 DBMS가 결과를 보여주는, "대화식 SQL"이었다.

하지만 현대 응용프로그램은 데이터베이스와 연동되는 경우가 매우 많기 때문에, 프로그램 구동 시 SQL 명령도 같이 내려야 할 필요가 생겼고, 그래서 C, C++, JAVA 등 다른 언어에 SQL문을 삽입된 형태를 "내장형 SQL"이라고 한다.

JAVA 같은 언어는 내장형 SQL을 그대로 컴파일 할 수 없기 때문에, "EXEC SQL"을 앞에 붙여 "전처리기"에 의해 먼저 분리컴파일한다.

 

대화식 SQL은 사용자와 DBMS가 실시간으로 문답하기 때문에 여러 개의 튜플을 반환할 수 있었다.

하지만 내장형 SQL은 다른 언어에서 SQL 명령을 함수의 호출로 실행하고 나서 반환된 값을 하나의 변수에 저장하게 된다.

이때 변수공간은 하나의 값을 기억하기 때문에, 내장형 SQL은 단 하나의 튜플만을 반환한다는 차이가 있다.

이는 명백한 단점이지만, "커서"라는 반복문 처리를 통해 여러 개의 튜플을 가져오는 효과를 대신할 수 있다.

 

SQL을 돌린 결과를 담는 변수는 "호스트 변수"라고 하며, 이를 SQL 내 테이블 속성과 구별하기 위해 변수명 앞에 ":(콜론)"을 붙인다.

그리고 내장 SQL에서 튜플을 추출하기 전에 담을 변수를 모두 선언해놓아야 당연히 오류가 발생하지 않는다.

변수 선언은 BEGIN DECLARE SECTION 과 END DECLARE SECTION 사이에 위치한다.

 

728x90
반응형