void main(){
printf("사번을 입력하시오 : ");
scanf("%d" ,&empno); //콘솔로 사번 입력
EXEC SQL WHENEVER NOT FOUND GOTO notfound;
EXEC SQL SELECT ENAME INTO :ename //변수에 담지 않고 바로 기술
FROM EMP
WHERE EMPNO = :empno;
printf("사원명 : %s.\n",ename);
notfound:
printf("%d는 존재하지 않는 사번입니다.\n",empno);
}
$ proc test.pc sqlcheck=syntax : success
$ proc test.pc sqlcheck=full userid=scott/tiger : error
void main(){
char selectId[50] = "SELECT * FROM EMP WHERE EMPNO = :empno";//바인드 변수
EXEC SQL PREPARE sql_stmt FROM :selectId ; /* SQL 문장을 정의 */
EXEC SQL DECLARE emp_cursor CURSOR SQL sql_stmt ; /* 커서 선언 */
EXEC OPEN emp_cursor USING :empno ; /* 커서 열기 : 실제 실행 단계가 아님 */
EXEC FETCH emp_cursor INTO :ename ; /* 쿼리문 실행 */
EXEC CLOSE emp_cursor ; /* 커서 닫기 : 닫지 않을 경우 비정상적 오류 발생 */
Printf("사원명 : %s.\n", ename);
}
Method 1. 입력 Host변수 없는 Non-Query(SELECT 문 제외)
1) DELETE FROM EMP WHERE EMPNO=20
2) ALTER USER SCOTT ACCOUNT UNLOCK;
Method 2. Host 변수가 고정적일 경우 Non-Query(SELECT 문 제외)
1) INSERT INTO EMP(EMPNO, ENAME) VALUES(:empno, :ename);
2: DELETE FROM DEPTNO WHERE DEPTNO = :deptno;
Method 3.select-list의 컬럼 갯수와 Host변수가 고정적일때
1) SELECT DEPTNO, COUNT('X') AS CNT FROM EMP GROUP BY DEPTNO; --컬럼의 갯수가 고정적
2) SELECT DEPTNO, DNAME FROM DEPT WHERE DEPTNO=20;--컬럼의 갯수가 고정적
3) SELECT ENAME, EMPNO FROM EMP WHERE DEPTNO=:deptno --컬럼의 갯수 및 Host 변수가 고정적
Method 4. select-list의 컬럼의 갯수와 Host 변수가 가변적
1) INSERT INTO EMP(....) VALUES(....);
1) SELECT .... FROM EMP WHERE EMPNO=:empno; --컬럼의 갯수가 고정적
public void preCursorCaching(int cnt)throws Exception{
((OracleConnection)conn).setStatementCacheSize(1);
((OracleConnection)conn).setImplicitCachingEnabled(true);
for( int i = 0; i < cnt; i ++){
PreparedStatement pstmt = conn.prepareStatement(" SELECT a.* *,?, ?, ?* FROM EMP a WHERE a.ENAME LIKE 'W%' ");
pstmt.setInt(1, i);
pstmt.setInt(2, i);
pstmt.setString(3, "test");
ResultSet rs = pstmt.executeQuery();
rs.close();
pstmt.close();
}
}
begin
Query1.Close;
Query1.Sql.Clear;
Query1.Sql.Add('SELECT ENAME, SAL FROM EMP ');
Query1.Sql.Add('WHERE EMPNO = :empno');
Query1.ParamByuName('empno').AsString := txtEmpno.Text;
Query1.Open;
end;
- 강좌 URL : http://www.gurubee.net/lecture/3104
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.