Using ORACLE Embeded SQL


<Oracle 예제 프로그램>

#include <stdio.h>

#include <sqlca.h>

/* ESQL 사용하기 위해 다음을 반드시 include시킵니다. */

/* 혹은 EXEC SQL INCLUDE SQLCA 사용합니다. */

#define UNAME_LEN 20

#define PWD_LEN 40

/* host 변수를 선언합니다. */

EXEC SQL BEGIN DECLARE SECTION;

EXEC SQL END DECLARE SECTION;

Typedef char asciiz[PWD_LEN];

/* error handle 위한 function */

void sql_error();

Main()

{

strcpy(username, “SCOTT”);

/* 자신의 사용자 계정을 username 변수에 저장을 시킵니다. */

strcpy(password,”TIGER”);

/* 자신의 password password 변수에 저장을 시킴니다. */

EXEC SQL WHENEVER SQLERROR DO sql_error(“ORACLE error ---“);

/* error 처리 */

EXEC SQL CONNECT :username IDENTIFIFD BY :password;

/* oracle 연결합니다. */

Printf(“\n Connect to ORACLE as user : %s \n”, username);

/* 다음은 select 사용시 커서 사용법입니다. */

/* cursor 선언합니다. */

EXEC SQL DECLARE salespeople CURSOR FOR

EXEC SQL OPEN salespeople;

EXEC SQL WHENEVER NOT FOUND DO break;

For(;;)

{

EXEC SQL FETCH salespeople INTO :emp_name , :salary, :dept_number;

Printf(“%-11s%9.2f%13.2f\n”, emp_name, salary, dept_number);

}

EXEC SQL CLOSE salespeople;

EXEC SQL COMMIT WORK RELEASE;

Exit(0);

}

void sql_error(msg)

char *msg;

{

char err_meg[512];

int buf_len, msg_len;

 

EXEC SQL WHENEVER SQLERROR CONTINUE;

Printf(“\n %s \n”, msg);

EXEC SQL ROLLBACK RELEASE;

Exit(1);

}

<compile 하는 >

path 우선 지정하기 : /applic/oracle/bin 연결 시키기.

file 이름 : *.pc 으로 저장. (ex> test.pc)

사용법 : csesql test

EXEC SQL INSERT INTO EMP (EMPNO, COMM)

VALUES(:emp_number, :commission_comm);

EXEC SQL SELECT ENAME, SAL, COMM

INTO :emp_name, :salary, : commission_comm

FROM EMP

WHERE EMPNO= : emp_number;

 

EXEC SQL UPDATE EMP

SET SAL =(SELECT AVG(SAL) * 1.1 FROM EMP WHERE DEPNO = 20)

WHERE EMPNO = :emp_number;