테이블 스키마는 다음과 같습니다.
테이블 이름: accounts
num integer generated by default as identity not null,
branchnum integer,
balance integer,
primary key(num)
데이타 50만개 집어 넣었구요 그 후,
EXEC SQL UPDATE accounts set balance = balance * 2;
이렇게 하면 우선 sqc precompile 할때 where 절이 없다고 warning이 나오지만 에러없이 패키지도 들어가고 실행파일도 만들어집니다.
그런데 실행시에 다음과 같은 에러가 납니다.
SQL0100W No row was found for FETCH, UPDATE or DELETE; or the result of a query is an empty table. SQLSTATE=02000
UPDATE query failed!
Expected code = 0
******************** DUMP OF SQLCA ********************
SQLCAID: SQLCA �
SQLCABC: 136
SQLCODE: 100
SQLERRML: 0
SQLERRMC: SQLRI021
SQLERRP: SQLRI021
SQLERRD[0]: 2147745793
SQLERRD[1]: 1
SQLERRD[2]: 0
SQLERRD[3]: 0
SQLERRD[4]: 0
SQLERRD[5]: 0
SQLWARN: 02000
SQLSTATE: 02000
****************** END OF SQLCA DUMP *******************
그런데 위의 UPDATE 구문에
EXEC SQL UPDATE accounts set balance = balance * 2 where num < 1000;
이런 식으로 where 구문을 추가해주면 실행이 잘 됩니다.
그래서 다음과 같이 꼼수를 부려 보았으나 ㅜㅜ
EXEC SQL UPDATE accounts set balance = balance * 2 where num < 500000;
EXEC SQL UPDATE accounts set balance = balance * 2 where num >= 0;
역시 처음의 경우처럼 에러나면서 쿼리가 실행이 안됩니다.
WHERE 구문 없이 어떤 필드 전체를 update 할 수 없는 건가요?
참고로 db2 shell에서는 에러 안나고 실행 잘 됩니다.
고수님들의 답변을 기다리겠습니다 ㅜㅜ
|