step1:
EXEC SQL WHENEVER SQLERROR STOP;
EXEC SQL CONNECT:username IDENTIFIEDBY:password;
…
gotostep3;
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;
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;
for(;;)
{
EXEC SQL FETCH…
EXEC SQL WHENEVER NOT FOUND CONTINUE;
EXEC SQL INSERT INTO…
}
EXEC SQL CLOSE my_cursor;
걍 프로시져써..-ㅅ- 뭔 Pro*c야..
음…어떻게 쓰는거에요 -_-;