본문 바로가기

DB

(4)
PL/SQL의 예외 처리 (EXCEPTION WHEN) EXCEPTION문에 의한 예외 처리 PL/SQL의 BEGIN과 END간에 발생한 예외는, 그 블록중에서 정의한 EXCEPTION 문장으로 취급한다. 같은 블록으로 예외 처리가 정의되어 있지 않은 경우에는 상위의 블록에 정의한다. 예외를 캐치해도 예외 처리부에서 아무것도 처리를 하지 않으면 아무것도 하지 않는다. 단.[예외의 재호출]을 실행하지 않으면 블록내에서 예외의 처리가 실행되었다고 판단되어 상위의 블록에 예외가 전해지지 않게된다. 예외를 처리하는 것만으로는 PL/SQL은 트랜잭션(transaction)의 롤백(rollback)이나 어떠한 초기화도 행하지 않는다. 트랜잭션(transaction) 처리도 포함해 모두 유저프로그램에 맡길 수 있다.SQL 에러에 의한 문장 레벨의 롤백(rollback)은..
CALL문과 EXECUTE 커맨드의 차이 CALL은 Oracle 9i부터 생긴 표준 SQL의 커맨드이며, EXECUTE는 예전부터 있는 SQL*Plus 커맨드이다. 양쪽 모두 펑션이나 프로시저의 실행에 사용하지만, 그 사양은 달라 새롭게 준비된 CALL이 좋다고 말할 수도 없다. Oracle 10g 까지는 CALL의 인수는 위치 표기법에만 한정되고 있었지만 Oracle 11g에서는 위치 표기법 및 양쪽 모두를 병용한 혼합 표기도 가능하게 되었다. 동시에 SQL의 함수 호출도 위치 표기법과 혼합 표기가 생겼다. EXECUTE 의 실행예 EXECUTE 커맨드는 텍스트를 PL/SQL 블록으로 변환하고 나서 실행한다. EXECUTE plsql_text;는 BEGIN plsql_text; END; 로 변환하고 나서 실행된다. SQL> variable :..
코멘트, PL/SQL 블록 행 코멘트 연속한 2개의 하이픈('--') 이후는 그 행의 끝까지 코멘트(주석)화 된다. 블록 코멘트 slash, asterisk('/*')과 asterisk, slash('*/') 로 둘러싸인 블록은 comment out 된다. -- 행 코멘트의 예 ; .... /* 블록 코멘트의 예 블록 코멘트 .... */ ; ... Tips PL/SQL 스토아드 서브 프로그램으로 블록 코멘트를 사용하면, 에러 발생시 메세지에 출력되는 에러행의 위치가 올바른 행 번호가 되지 않는다. 이것은 블록 코멘트의 행 만큼 어긋나는 것인데 블록 코멘트가 컴파일시에 삭제되고 있기 때문이라고 생각된다. 그러나 행 코멘트의 경우에, 차이가 발생하지 않는다. PL/SQL의 개발에는 블록 코멘트보다 행 코멘트만 사용하는 것이 좋다. ..
MYSQL 에서 VIEW 테이블 만들기 회사에서 고민하다 서브쿼리 및 조인문을 만들기 귀찮음으로 인해 한방에 해결할 VIEW 테이블을 만들었다... 뷰테이블에 알고리즘이 들어가 속도에 영향을 준다고 한다. 나는 다른사람의 테스트 결과 가장 빠른것으로 결론 난 temptable 알고리즘을 사용했다. 사용법은 ALGORITHM=temptable 이것만 추가해주면 된다. select 문으로 보여줄 칼럼을 선택하고 from 절에 left join 을 썻다. left join의 사용법은 table left join (tabl1,tabl2) on (tabl1.field=table2.field and table.field=table2.field) where table.field = tabl1.field left join (tabl1,tabl2) on (t..