2020. 6. 21. 20:00ㆍ컴퓨터언어/Database
지금까지의 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 사이에 위치한다.
'컴퓨터언어 > Database' 카테고리의 다른 글
Stored Procedure (0) | 2020.06.21 |
---|---|
커서 - 내장형 SQL로 반환되는 단 하나의 튜플을 여러개로 늘리는 반복문 (0) | 2020.06.21 |
트리거 - 서로 연동된 릴레이션에 연쇄조작을 가해 무결성 확보 (0) | 2020.06.21 |
[SQL] DBA가 DBMS와 대화하는 언어 (0) | 2020.06.18 |
[관계 데이터 연산] 관계형 데이터베이스의 이론적 기반 - 관계대수, 관계해석 (0) | 2020.06.18 |