begin
DECLARE SEQVAL NUMBER;
NTable varchar(10000);
e_not_exist EXCEPTION;
begin
for c in (SELECT TNAME FROM tab where tname <> 'XPObjectType') loop
NTable := c.TNAME;
--DBMS_OUTPUT.PUT_LINE(NTable);
--SELECT TNAME INTO NTable FROM tab where TNAME = c.TNAME;
SELECT MAX(OID) INTO SEQVAL FROM NTable;
--EXECUTE IMMEDIATE(' drop sequence IL5_SEY.'||c.TNAME||'');
--EXECUTE IMMEDIATE(' create sequence IL5_SEY.'||c.TNAME||' increment by 1 start with '||SEQVAL||' NOCYCLE CACHE 20 NOORDER');
end loop;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE(NTable);
WHEN VALUE_ERROR THEN
DBMS_OUTPUT.PUT_LINE(NTable);
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(NTable);
End;
end;
우선 위와 같은 문장인데요
이 문장에 핵심 내용은 Loop를 돌아서 검색한 테이블을 Select 해서 키 값 max 값을 찾고
해당 max 값으로 Sequence 만드는 쿼리 입니다.
근데 이 쿼리에서 전체 테이블 검색 하면서 비교하는 문장 에서
테이블 이나 뷰가 없다고 나옵니다. 에러 나오는건 그렇다 치는데
이게 예외 처리로 안떨어 집니다. 이걸 예외로 잡아 볼려고 하는데 검색해 봐도 모르겠네요
예외로 빠지게 해야 어떤 테이블에서 에러가 나오는지 알 수 있는데 그게 아니고선 찾기가 어렵네요.
mssql 은 좀 편한게 오라클은 좀 그지 같네요...
아오... 좀 많이 불편하네요.. 왜 오라클이 mssql 보다 좋다고 하는지 모르겠네요??
제가 mssql 개발을 3년 정도 하고 오라클을 이제 6개월 조금 넘기면서 배우는데
프로시저 짜는게 오라클은 진짜 젓 같네요.. 머가 안되는게 이리 많은지.. Continue 가 11 버전 부터 된다는 것도
오늘 알았네요 에휴.. 아무튼.. 제가 만든 오라클 프로시저에서 발생 되는 "테이블 이나 뷰가 없습니다." 에러에 대해서는
예외 처리가 불가능 한건가요??