[ORACLE] 정적쿼리 및 동적쿼리

View this thread on: d.buzz | hive.blog | peakd.com | ecency.com
·@ekkim·
0.000 HBD
[ORACLE] 정적쿼리 및 동적쿼리
<center>![](https://cdn.steemitimages.com/DQmPYCX3eTAuLVP5NfkxU847aja2ydiN1BWRzi41M86QLuS/image.png)</center>
> 바로 앞 전 포스트에서 언급했던 프로시저를 개발하면서 동적쿼리에 대해 알게 되었고 이를 정리해보았다. 
동적쿼리가 필요했던 이유는 커서로 테이블명을 받아왔고 이 커서 변수를 쿼리문에 써야할 상황이었기 때문이다.
(정적쿼리로는 배열로 정의한 테이블명이 인식 안됌)

![](https://cdn.steemitimages.com/DQmYRRgQrUjPgjEgL9LdsUhAWBy9TMeRXF696tLKxiEKCnF/image.png)
**1)	정적쿼리 :**
&nbsp;- 고정된 SQL 형태를 만들어 사용 (일반적으로 작성된 SQL쿼리)
&nbsp;- Parsing 되면 Memory에 상주하면서 Shared 
&nbsp;&nbsp;&nbsp;&nbsp;=> Stored Procedure에 새로 캐싱되지 않아 재사용성 있음
EX)
![](https://cdn.steemitimages.com/DQma9L4NuDu3zFcifu1a9F5MMoa6YRxUboYiziQY6wiyTfB/image.png)

**2)	동적쿼리 :**
&nbsp;- 입력 값이나 변경 사항을 추가해 실행할 쿼리문을 문자열로 SQL 변수에 작성해 담아 만든 후 DBMS에서 콜
&nbsp;- 실행 될 때마다 Parsing 
&nbsp;&nbsp;&nbsp;&nbsp;=> Stored Procedure를 생성할 때 새로 캐싱되어 재사용성 떨어트림
EX)
![](https://cdn.steemitimages.com/DQmUp6q7DvkqACKbaEozMWqD8G4zC3Hv9DVn61Rg64eJvnw/image.png)

![](https://cdn.steemitimages.com/DQmWJMepT91UvwLNfy1Kjonnyv69LonwNQugASddh9uyrrn/image.png)

![](https://cdn.steemitimages.com/DQmbBjtYS1V8gR7APTkQFmUKYMdVa5JZqk6fy1spHg2Xp9D/image.png)
- NUMTB 테이블을 이용해 특정 코드를 프로시저에 입력하면 그 코드의 NUM 총 합계를 구하는 프로시저를 만들어보겠습니다.

**[NUMTB] 데이터**
![](https://cdn.steemitimages.com/DQmZYHWWiJGGK5TNcCMt63XNff9hTH37nG6m7SnwNdR4D1e/image.png)

![](https://cdn.steemitimages.com/DQmctghdHgvqtF3RW5R4Pv7LQeJRbqsXFdPTvWovLfndwbn/image.png)
![](https://cdn.steemitimages.com/DQmXTD5J9qzfqtjQ8FnPdXFAfmiGLqf5F5tRF6BXTHK42HK/image.png)

![](https://cdn.steemitimages.com/DQmUTPgAdLEvfVpRyt5JNa9PzgSZLXaWWFvXzu2FPReFCS7/image.png)
![](https://cdn.steemitimages.com/DQmRYzm6AgJTwLH9uQWWD8y9rhLEwRVnXGwavAK9QvQrbm4/image.png)

참고 사이트 : 
http://deviant86.tistory.com/468
http://www.gurubee.net/article/19612
👍 , , ,