8.1 Embedded SQL

DBMS 접근방식

Embedded SQL

: 호스트 언어 중간 중간에 SQL 문장을 직접 삽입하는 방식

-- Connecting to a DB
EXEC SQL CONNECT ...;

-- Declaring variables 
EXEC SQL BEGIN DECLARE SECTION
...
EXEC SQL END DECLARE SECTION;
-- 선언된 변수는 사용할 떄 콜론(:)을 접두사 형식으로 써야한다.

-- Statements
EXEC SQL statement;

Cursors (커서)

#include <stdio.h>
EXEC SQL define FNAME_LEN 15;
EXEC SQL define LNAME_LEN 15;
main() {
		EXEC SQL BEGIN DECLARE SECTION;
				char fname[FNAME_LEN + 1];
				char lname[LNAME_LEN + 1];
		EXEC SQL END DECLARE SECTION;
		EXEC SQL connect to 'myServer';
		
		EXEC SQL DECLARE demoCursor cursor for
				selcet firstName, lastName;
				from customer
				where deptName < 'C';
		EXEC SQL open demoCursor;
		for (;;){
				EXEC SQL fetch demoCursor into :fname, :lname; // tuple단위로 한개씩 
				if(strncmp(SQLSTATE, "00000", 5) != 0) break;
				printf("%s %s\\n", fname, lname);
		}
		if(strncmp(SQLSTATE, "02", 2) != 0) // no more tuples
				printf("SQLSTATE after fecth is %s\\n", SQLSTATE);
		EXEC SQL close demoCursor;
		EXEC SQL disconnect current; 
}

Dynamic SQL

: 프로그램 실행 시간에 SQL 문이 생성되는 SQL