티스토리 뷰
MSSQL문의 저장프로시저를 분석해서 자바 배치를 만드는 작업을 하던 중에.. 막히는 부분이 있었다.
MSSQL의 저장프로시저에는 무조건 쿼리를 만들어 임시테이블에 넣고,
그 임시테이블을 가지고 이것저것 조건을 건 다음에 다시 다른 임시테이블에 넣는 작업이 반복되고 있었다.
며칠을 고민한 끝에 오라클의 WITH문을 발견하고 '만세~!'를 불렀다. ㅋ
WITH문을 사용하면 자유자재로 쿼리를 뷰처럼 재사용할 수 있었기 때문이다.
WITH viewData AS
(
SELECT *
FROM TestTable_1
)
SELECT *
FROM viewData
;
이건 WITH 문의 기본 문장이다.
WITH name AS ( 쿼리 )
그런데, WITH문에 다중 쿼리를 사용하면 그 위력이 엄청나게 된다.
WITH viewData1 AS
(
SELECT *
FROM TestTable_1
),
WITH viewData2 AS
(
SELECT *
FROM TestTable_2
)
SELECT V1.id,
V2.name,
V2.address
FROM viewData1 V1,
viewData2 V2
WHERE V1.id = V2.id
AND V1.name LIKE '최%'
;
이런 정도의 쿼리라면 굳이 WITH문을 사용할 필요가 있을까?
다음 쿼리를 보자.
WITH viewData1 AS
(
SELECT *
FROM TestTable_1
),
WITH viewData2 AS
(
SELECT *
FROM TestTable_2
),
WITH viewData3 AS
(
SELECT V1.id,
V2.name,
V2.address
FROM viewData1 V1,
viewData2 V2
WHERE V1.id = V2.id
AND V1.name LIKE '최%'
)
SELECT *
FROM viewData3
WHERE ROWNUM <= 100
;
이런식으로.. 위에서 정의한 viewData1, viewData2를 아래 WITH문에서 호출해서 사용할 수 있다.
갯수는 계속 추가해서 사용할 수 있으니 WITH문으로 임시테이블이나 View처럼 사용할 수 있어 좋다.
'프로그래밍 > MSSQL' 카테고리의 다른 글
Case (0) | 2012.08.31 |
---|---|
특정사용자 테이블보기, 유저테이블 보기. (0) | 2012.08.31 |
WITH (NOLOCK) (0) | 2012.08.14 |
저장프로시저 (0) | 2012.08.10 |
튜플,애트리뷰트,도메인 논리적 모델링 (0) | 2012.08.10 |
- Total
- Today
- Yesterday
- MSSQL
- json
- grid
- css3
- WebApi
- 자바스크립트
- IE
- Style
- SVG
- 프로시저
- radius
- 저장프로시저
- jQuery Mobile
- rowspan
- drag&drop
- 제이쿼리
- Mobile
- JavaScript
- workbook
- jQuery
- JS
- 셀렉터
- CSS
- Excel
- Ajax
- Chart
- WCF
- ASP.NET
- html5
- jquery chart
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |