본문 바로가기

SAP

[New Open SQL / HANA SQL] WITH 문

New Open SQL에 도입된 새로운 문법.

 

WITH문은 하나 이상의 CTE(Common Table Expressions) 정의를 내린다.

 

각각의 CTE로 정의한 select 쿼리는 WITH문 안에서 사용하는 쿼리에서 테이블처럼 쓰일 수 있다. 

 

즉, 서브쿼리에 별칭을 붙여서 사용하기 위해 만들어진 문법이라고 생각하면 편하다.

 

CTE들은 쉼표로 구분되며, CTE의 이름은 최대 30자까지 가능하며 이름 앞에는 +가 붙어야 한다.

 

# 코드 예시

WITH
      +conns AS (
        SELECT carrname, connid, cityfrom, cityto
              FROM spfli
                JOIN scarr ON spfli~carrid = scarr~carrid
              WHERE spfli~carrid = @carrid ),
      +cnts AS (
        SELECT COUNT(*) AS cnt
               FROM +conns )
      SELECT *
             FROM +cnts
               CROSS JOIN +conns
             ORDER BY carrname, connid
             INTO CORRESPONDING FIELDS of TABLE @itab.

 

일반적인 서브쿼리는 서로를 참조할 수 없다는 것에 비해, with문을 통한 서브쿼리 해당 서브쿼리 자체를 별도의 테이블로 인식하여 서로 참조가 가능하다. 

 

이렇게 임시 테이블로 인식하면 버퍼캐쉬에 해당 데이터를 싣게 되고 재사용 하는 만큼 실행계획을 생성하는 것을 줄일 수 있다. (기존의 서브쿼리는 사용시 각각의 실행계획을 생성한다.)

 

'SAP' 카테고리의 다른 글

서로 다른 시스템에서 코드 비교  (0) 2022.01.17
필드 카탈로그 뽑는 코드  (0) 2022.01.17
ABAP Dictionary  (0) 2021.12.13