: 호스트 언어 중간 중간에 SQL 문장을 직접 삽입하는 방식
-- Connecting to a DB
EXEC SQL CONNECT ...;
-- Declaring variables
EXEC SQL BEGIN DECLARE SECTION
...
EXEC SQL END DECLARE SECTION;
-- 선언된 변수는 사용할 떄 콜론(:)을 접두사 형식으로 써야한다.
-- Statements
EXEC SQL statement;
#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;
}
커서를 이용해 데이터 갱신이 가능하고 갱신을 위한 커서는 선언시 명시해야한다.
Declare myCursorUpdate cursor for
select *
from professor
where deptName = 'CS'
for update;
Update professor
set salary = salary + 100
where current of myCursorUpdate; // 현재위치에서 바꿔줌
: 프로그램 실행 시간에 SQL 문이 생성되는 SQL