Pro* C/C++ WHENEVER 지시자에 대해서

step1:
EXEC SQL WHENEVER SQLERROR STOP;
EXEC SQL CONNECT:username IDENTIFIEDBY:password;

gotostep3;

step2:
EXEC SQL WHENEVER SQLERROR CONTINUE;
EXEC SQL UPDATE emp SET sal = sal*1.10;

step3:
EXEC SQL DROP INDEX emp_index;

이런 식으로 WHENEVER 지시자가 있을때 첫번째 지시자는 CONNECT에 영향을 미치고 두번째는 UPDATE 와 DROP에 영향을 미친다고 한다. 이른바 스코프가 logical 이 아니고 positional 이라고 한다.

흐으음…. 알수없군…

일반적으로 SELECT 구문에서 모든 row를 while 문을 돌리면서 읽어올때는 이렇게

EXEC SQL WHENEVER NOT FOUND DO break;
for(;;)
{
EXECSQLFETCH…
}
EXEC SQL CLOSE my_cursor;

그리고 위의 코드 사이에 또다른 실행문이 있는 경우에는 따로 WHENEVER 지시어를 사용. 요렇게. (INSERT문도 결과적으로 INSERT 된 ROW가 하나도 없을 때는 NOT FOUND 가 나온다고 한다.)

EXEC SQL WHENEVER NOT FOUND DO break;
for(;;)
{
EXEC SQL FETCH…
EXEC SQL WHENEVER NOT FOUND CONTINUE;
EXEC SQL INSERT INTO…
}
EXEC SQL CLOSE my_cursor;

“Pro* C/C++ WHENEVER 지시자에 대해서”에 대한 2개의 댓글

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다