회사에서 운영하는 홈페이지의 코드를 분석했다.
왠만한 쿼리문은 복잡하지 않은 이상 다 비슷하다 생각했는데 처음보는 함수가 눈에 띄었다.
connect by라는 함수였는데
이 함수가 쓰인 부분은 데이터를 24시간을 한시간씩 쪼개서 가져올 때 쓰였다.
정확한 의미가 뭔지 몰라 찾아보니 계층구조 쿼리라는데 이 부분은 전혀 계층이랑 관련이 없는 부분이였다..
보통 CONNECT BY절을 사용하여 계층 질의에서 상위계층(부모행)과 하위계층(자식행)의 관계를 규정할 수 있다고 한다.
하지만 다른 용도로 사용하는 것을 더 찾아보니!
CONNECT BY LEVEL <=:변수
이 구문이 눈에 들어왔다. 실제 회사에서도 이 구문으로 코드를 작성하였는데
여기서의 connect by는 for문 역할을 하고있었다.
c언어로 생각해보면 for(int i=1;i<5;i++)의 역할을 하고있다.
connect by함수의 특징으로는
얼마씩 증가할지 어디서부터 시작할 지 어디까지 루프를 돌릴것인가는 변경이 가능하다고 한다.
어떻게 변경시킬 수 있느냐는 level의 값에 달려있는데
level을 조정하니 0.1씩 증가가 되었다. 이때 connect by level<5로 설정하였음에도 0.4까지 반복되는 것은
마지막 구문은 어디까지 반복할 것인지가 아닌 얼마나 반복할 것인가를 조정하는 부분이다.
level에 +10을 하니 시작하는 구간이 변경되었다.
지금까지 테스트 해본 것을 통해 level에 곱을 하면 level의 간격만큼 증감이 되는 것이고,
level에 덧셈을 하면 그 덧셈부터 시작한다는 것을 알 수 있다.
그럼 이 level을 어떻게 사용해야 24시간을 쪼갤수 있냐면
요로케하면 끝~
'study > 인턴일지' 카테고리의 다른 글
[java/배열/형변환]String배열을 int형 배열로 변환하기 (0) | 2020.05.12 |
---|---|
[javaScript/highCharts] 자바스크립트 HIGH CHARTS로 그래프그리기 (0) | 2020.05.08 |
[javascript/에러]Unterminated <c:if tag (0) | 2020.05.07 |
[ORACLE/DB]데이터 삭제 및 수정 (0) | 2020.04.21 |
[CLOB/DTO/데이터베이스] CLOB으로 DB에 저장하기 (0) | 2020.04.13 |