[ORACLE] 정적쿼리 및 동적쿼리
바로 앞 전 포스트에서 언급했던 프로시저를 개발하면서 동적쿼리에 대해 알게 되었고 이를 정리해보았다.
동적쿼리가 필요했던 이유는 커서로 테이블명을 받아왔고 이 커서 변수를 쿼리문에 써야할 상황이었기 때문이다.
(정적쿼리로는 배열로 정의한 테이블명이 인식 안됌)
1) 정적쿼리 :
- 고정된 SQL 형태를 만들어 사용 (일반적으로 작성된 SQL쿼리)
- Parsing 되면 Memory에 상주하면서 Shared
=> Stored Procedure에 새로 캐싱되지 않아 재사용성 있음
EX)
2) 동적쿼리 :
- 입력 값이나 변경 사항을 추가해 실행할 쿼리문을 문자열로 SQL 변수에 작성해 담아 만든 후 DBMS에서 콜
- 실행 될 때마다 Parsing
=> Stored Procedure를 생성할 때 새로 캐싱되어 재사용성 떨어트림
EX)
- NUMTB 테이블을 이용해 특정 코드를 프로시저에 입력하면 그 코드의 NUM 총 합계를 구하는 프로시저를 만들어보겠습니다.
[NUMTB] 데이터
참고 사이트 :
http://deviant86.tistory.com/468
http://www.gurubee.net/article/19612