OPEN SQL
- abap ์์๋ง ์ฌ์ฉ๋๋ฉฐ DB interface๋ฅผ ํตํด์ native sql๋ก ๋ฒ์ญ๋ฉ๋๋ค.
Native SQL : ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฌ์ฉ๋๋ SQL ์ธ์ด
- DML๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค. DDL๊ณผ DCL์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- Local Buffer๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- Native SQL ๋ณด๋ค ๊ฐ๋จํฉ๋๋ค.
OPEN SQL๋ก ํด๊ฒฐ๋์ง ์๋ ๋ณต์กํ SQL ์ NATIVE SQL์ ์ด์ฉํ์ฌ ํด๊ฒฐํ ์ ์์ต๋๋ค.
SELECT
- SINGLE ํค์๋๋ฅผ ์ฌ์ฉํ ๋๋ ์ํ๋ ๋ฐ์ดํฐ์ ์กฐ๊ฑด์ ๋ช
ํํ๊ฒ ์๊ณ ์์ด์ผ ํฉ๋๋ค.
- ๋ง์ฝ WHERE๊ตฌ๋ฌธ์ด ์๋ชป๋์ด ์ฌ๋ฌ ๋ผ์ธ์ด ์กด์ฌํ๋ค๋ฉด ์์์ ๋ผ์ธ์ ๋ฐํํ๊ฒ ๋ฉ๋๋ค.
- ๊ตฌ์กฐ์ฒด๋ฅผ ์ด์ฉํ SELECT ๋ฌธ vs ์ธํฐ๋ ํ ์ด๋ธ์ ํ์ฉํ SELECT ๋ฌธ
๊ตฌ์กฐ์ฒด๋ฅผ ์ด์ฉํ SELECT ~ ENDSELECT ๋ฌธ
DATA : gt_itab TYPE STANDARD TABLE OF sflight,
gs_wa TYPE sflight.
SELECT * INTO gs_wa FROM sflight WHERE carrid EQ 'AA'.
WRITE : / gs_wa-carrid, gs_wa-connid.
ENDSELECT.
์ธํฐ๋ ํ ์ด๋ธ์ ํ์ฉํ SELECT ๋ฌธ
DATA : gt_itab TYPE STANDARD TABLE OF sflight,
gs_wa TYPE sflight.
SELECT * INTO gt_itab FROM sflight WHERE carrid EQ 'AA'.
LOOP AT gt_itab INTO gs_wa.
WRITE : / gs_wa-carrid,
gs_wa-connid.
ENDLOOP.
์ธํฐ๋ ํ ์ด๋ธ์ ํ์ฉํ์ฌ ํ ๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๋๊ฒ ํจ์จ์ ์ ๋๋ค.
์๋ํ๋ฉด ๊ตฌ์กฐ์ฒด๋ฅผ ํ์ฉํ ๊ฒฝ์ฐ SELECT ~ ENDSELECT ๊ตฌ๋ฌธ์ด ๋ฐ๋ณต ์ํ๋ ๋ ๋ง๋ค Application Server์ Database ๊ฐ์ ์ฐ์ฐ์ด ์ํ๋๊ธฐ ๋๋ฌธ์ ๋๋ค.
FROM
- UP TO n ROWS
์ฌ์ฉ์์ ์ค์๋ก ๋๋์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ์ฌ ๋ฐ์ํ ์ ์๋ DB ์ฑ๋ฅ ์ ํ๋ฅผ UP TO n ROWS ๊ตฌ๋ฌธ์ ํตํด์ ํด๊ฒฐํ ์ ์์ต๋๋ค.
์ฌ์ฉ์์ ์ค์ : ์๋ฅผ ๋ค์ด ์กฐํ ์กฐ๊ฑด์ ๋ ์ง๋ฅผ ์ ๋ ฅํ์ง ์๋ ๊ฒ๊ณผ ๊ฐ์ ๊ฒฝ์ฐ๋ฅผ ๋งํฉ๋๋ค.
JOIN
- JOIN ์ ์ฌ์ฉ๋๋ ํ๋๊ฐ ์ธ๋ฑ์ค์ ์กด์ฌํ ๋ ๋น ๋ฅธ ์ฑ๋ฅ์ด ๋ณด์ฅ๋ฉ๋๋ค.
- ๊ฐ๋ฅํ๋ฉด LOOP ๋ฌธ ๋์ JOIN์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ฑ๋ฅ์ ์ํด์ ๋ฐ๋์งํฉ๋๋ค.
- WHERE ์กฐ๊ฑด๊ณผ ON ๊ตฌ๋ฌธ์ด ๊ฐ์ด ์ ํ์์ผ๋ฉด WHERE ์กฐ๊ฑด์ด ๋จผ์ ์ํ๋๊ณ ๊ทธ ๋ค์ ON ์กฐ๊ฑด์ด ์งํ๋ฉ๋๋ค.
- ABAP์์๋ LEFT OUTER JOIN๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
FOR ALL ENTRIES ๊ตฌ๋ฌธ
- ์ธํฐ๋ ํ ์ด๋ธ๊ณผ DB์ ํ ์ด๋ธ์ JOINํ๋ ๊ฐ๋ ์ ๋๋ค.
- LOOP ๋ฌธ์ ์ํํ๋ฉด์ SQL์ ์ํํ๊ธฐ ๋๋ฌธ์ JOIN๋ณด๋ค ๋นํจ์จ์ ์ ๋๋ค.
- ํ์ง๋ง ABAP์์ ์ ์ฉํ๊ฒ ํ์ฉ๋ ์ ์์ต๋๋ค.
- ์ธํฐ๋ ํ ์ด๋ธ์ ์ปฌ๋ผ๊ณผ ๋น๊ตํ๋ DB ํ ์ด๋ธ์ ์ปฌ๋ผ ํ์ ์ ๊ฐ์์ผ ํฉ๋๋ค.
- LIKE, BETWEEN, IN ๊ณผ ๊ฐ์ ๋น๊ต๊ตฌ๋ฌธ์ ์ฌ์ฉํ ์ ์์ต๋๋ค
- ์ธํฐ๋ ํ ์ด๋ธ์ด NULL ์ด๋ฉด ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ต๋๋ค.
- ์์ ์ฝ๋
DATA gt_spfli TYPE TABLE OF spfli.
DATA gt_sflight TYPE TABLE OF sflight.
DATA gs_sflight TYPE sflight.
SELECT * FROM spfli INTO TABLE gt_spfli.
SELECT * FROM sflight
INTO TABLE gt_sflight
FOR ALL ENTRIES IN gt_spfli
WHERE carrid = gt_spfli-carrid
AND connid = gt_spfli-connid.
LOOP AT gt_sflight INTO gs_sflight.
WRITE : / gs_sflight-carrid, gs_sflight-connid.
ENDLOOP.
Scalar Subquery
- where ๊ตฌ๋ฌธ์ subquery๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- Scalar Subquery๋ ๋ฐ๋์ ํ ์ปฌ๋ผ๋ง์ ๋ฐํํด์ผ ํฉ๋๋ค.
- Nested Loop ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
- Scalar Subquery๊ฐ ์คํ๋๋ ํ์๋ row ์ ์ ๋๋ค.
Non-scalar Subquery
- subquery์ ๊ฒฐ๊ณผ๊ฐ ์กด์ฌํ๋ฉด true๋ฅผ ๋ฐํ, ์กด์ฌํ์ง ์์ผ๋ฉด false๋ฅผ ๋ฐํํฉ๋๋ค.
- EXISTS ๊ตฌ๋ฌธ์ ์ด์ฉํ์ฌ ๊ตฌํํฉ๋๋ค.
- ์์ ์ฝ๋
DATA : gv_carrid TYPE sflight-carrid,
gv_connid TYPE sflight-connid,
gt_paymentsum TYPE sflight-paymentsum.
SELECT SINGLE carrid connid paymentsum
INTO (gv_carrid, gv_connid, gv_paymentsum)
FROM sflight AS a
WHERE EXISTS ( SELECT *
FROM spfli
WHERE carrid = a~carrid
AND connid = a~connid )
AND a~carrid = 'AA'.
WRITE : gv_carrid, gv_connid, gv_paymentsum.
UPDATE ๊ตฌ๋ฌธ
- work area๋ฅผ ์ฌ์ฉํ๋ ๊ฒ ๋ณด๋ค SET ๊ตฌ๋ฌธ์ ํ์ฉํด์ ๊ฐ๋ณ ์ปฌ๋ผ ๊ฐ์ ๋ณ๊ฒฝํ๋ ๊ฒ์ด ์ฑ๋ฅ์ด ์ฐ์ํ๋ค.
UPDATE <target> SET <set 1> <set 2> WHERE <cond>.
UPDATE spfli
SET cityto = ' Shanghai'
WHERE carrid = 'KO'
AND connid = '0001'.
MODIFY ๊ตฌ๋ฌธ
- UPDATE ๊ตฌ๋ฌธ๊ณผ INSERT ๊ตฌ๋ฌธ์ ํฉํ ๊ธฐ๋ฅ์ ์ํํฉ๋๋ค.
- ํท๊ฐ์ ๊ฐ์ง๋ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ๋ฉด UPDATE๋ฅผ ์ํํ๋ฉฐ, ์กด์ฌํ์ง ์์ ๊ฒฝ์ฐ INSERT๋ฅผ ์ํํฉ๋๋ค.
ํจ์จ์ ์ธ SQL ๊ตฌ๋ฌธ ์์ฑ
- INDEX๋ฅผ ํ์ฉํ๋ SQL๊ตฌ๋ฌธ์ ์์ฑํด์ผํฉ๋๋ค.
ํจ์จ์ ์ด์ง ์์ SQL | ํจ์จ์ ์ธ SQL |
SEELCT * FROM sflight INTO wa WHERE carrid <> 'LH' AND connid = '0400'. |
SELECT * FROM sflight INTO wa WHERE carrid IN ( SELECT carrid FROM scarr WHERE carrid <> 'LH' ) AND connid = '0400'. |
<> ์ฐ์ฐ์๋ฅผ ์ง์ ์ฌ์ฉํ๋ ๋์ , ์๋ธ์ฟผ๋ฆฌ์ IN ์ฐ์ฐ์๋ฅผ ์กฐํฉํ์ฌ ์ธ๋ฑ์ค ์ฌ์ฉ์ ์ต์ ํํ๊ณ ์์ต๋๋ค.
- ORDER BY ๋์ SORT ๊ตฌ๋ฌธ
ํจ์จ์ ์ด์ง ์์ SQL | ํจ์จ์ ์ธ SQL |
SELECT * FROM sflight INTO TABLE itab WHERE carrid = 'LH' ORDER BY carrid connid. |
SELECT * FROM sflight INTO TABLE itab WHERE carrid = 'LH'. SORT itab BY carrid connid. |
ORDER BY ๊ตฌ๋ฌธ์ ์ ์ ํ ์ธ๋ฑ์ค๊ฐ ์ํ๋๋๋ฐ ๋ฐฉํด๊ฐ ๋ ์ ์์ผ๋ฏ๋ก SORT ๊ตฌ๋ฌธ์ ๋์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์ธ๋ฑ์ค์ ์ฌ์ฉ๋ ํ๋๋ฅผ ๋ชจ๋ ์์ฑ
SFLIGHT ํ ์ด๋ธ์์ 3๊ฐ์ ํ๋ (CARRID, CONNID, FLDATE) ๋ก ๊ตฌ์ฑ๋ ์ธ๋ฑ์ค๊ฐ ์กด์ฌํ๋ค๊ณ ํ ๋
ํจ์จ์ ์ด์ง ์์ SQL | ํจ์จ์ ์ธ SQL |
" carrid ํ๋๋ฅผ ์ฌ์ฉํ์ง ์์ SELECT * FROM sflight INTO TABLE itab WHERE connid = '0017' AND fldate = '20140101'. |
" range ๋ณ์๋ฅผ ํตํด carrid ํ๋๋ ์ฌ์ฉ RANGES : r_carrid FOR sflight-carrid. r_carrid-sign = 'I'. r_carrid-option = 'EQ'. r_carrid-low = ' '. APPEND r_carrid. SELECT * FROM sflight INTO TABLE itab WHERE carrid = r_carrid AND connid = '0017' AND fldate = '20140101'. |
ํจ์จ์ ์ธ SQL ๊ตฌ๋ฌธ์ ๊ฒฝ์ฐ RANGE ๋ณ์๋ฅผ ํ์ฉํด CARRID ์ ๋น ๊ฐ์ ํ๋ ์ถ๊ฐํ์ฌ WHERE ์ ์์ ์ธ๋ฑ์ค์ ์ฌ์ฉ๋ ๋ชจ๋ ํ๋๋ฅผ ํ์ฉํ๊ณ ์์ต๋๋ค.
์ถ์ฒ : Easy ABAP 2.0
'๐SAP:ABAP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ ์ฌ๋ณผ(Field Symbol) (0) | 2024.12.02 |
---|---|
GRID ALV (3) | 2024.11.27 |