이글은 자료실에 있는 DynamicOpenSql 영문파일을 정리한 것이다.
Dynamic SQL은 Runtime에 사용가능한 Open SQL은 번역이 이루워진 후 DB를 제어하게 된다.
이때 DB를 선택하고나 가공하는 시간대비 번역에 걸리는 시간은 극히 미비하여 무시해도 될 정도이니
Dynamic SQL을 사용하면서 쿼리자체의 튜닝시간에 신경을 쓸지언정
Dynamic SQL을 사용함에 따른 시간은 생각하지 말자!
Dynamic Open SQL.
내역 : FROM clause.
(Rel6.10이후 버젼부터는 Join을 허용하므로 아래의 내용을 사용할 수 있다)
---------------------------------------------------------------------
사전지식 : Oracle Native SQL사용가능( 집합함수를 사용할 줄 안다.)
MS-SQL을 사용해본 사람이 유리하죠. JOIN명령 때문에
Oracle을 사용하신 분은 join처음에 적응 안되죠..(+)게 익숙한데..
---------------------------------------------------------------------
문법 : SELECT * FROM (lv_tabname).
FROM절에서 사용되는 table이름 단독으로 사용된다.
inner join, outter join등은 허용되지 않는다.
이 이야기는 결국 lv_tabname의 type이 internal table 필요가 없을음 알수있다
생각 : 본문의 코딩이 워낙 쉬어서 주석을 달지 않았음.
프로그램 원문.
--------------------------------------------------------------------*
REPORT YTEST_DYNAMIC_OPEN_SQL06.
parameters: p_cities as checkbox,
p_carrie as checkbox,
p_seats as checkbox,
p_names as checkbox.
data: begin of wa,
carrid type sbook-carrid,
connid type sbook-connid,
fldate type sbook-fldate,
customid type sbook-customid,
cityfrom type spfli-cityfrom,
cityto type spfli-cityto,
carrname type scarr-carrname,
seatsmax type sflight-seatsmax,
seatsocc type sflight-seatsocc,
name type scustom-name,
end of wa,
lv_from type string value 'sbook as b',
lv_list type string value 'b~carrid b~connid b~fldate b~customid'.
if p_cities = 'X'.
concatenate
lv_from ' join spfli as p on b~carrid = p~carrid and b~connid = p~connid'
into lv_from.
concatenate lv_list ' cityfrom cityto' into lv_list.
endif.
if p_carrie = 'X'.
concatenate
lv_from ' join scarr as c on b~carrid = c~carrid' into lv_from.
concatenate lv_list ' c~carrname' into lv_list.
endif.
if p_seats = 'X'.
concatenate
lv_from ' join sflight as f'
' on b~carrid = f~carrid and b~connid = f~connid and b~fldate = f~fldate'
into lv_from.
concatenate lv_list ' seatsmax seatsocc' into lv_list.
endif.
if p_names = 'X'.
concatenate
lv_from ' join scustom as u on b~customid = u~id' into lv_from.
concatenate lv_list ' name' into lv_list.
endif.
select (lv_list) from (lv_from) into corresponding fields of wa.
write: / wa-connid, wa-carrid, wa-fldate, wa-customid.
if p_cities = 'X'.
write: wa-cityfrom, wa-cityto.
endif.
if p_carrie = 'X'.
write: wa-carrname.
endif.
if p_seats = 'X'.
write: wa-seatsmax, wa-seatsocc.
endif.
if p_names = 'X'.
write: wa-name.
endif.
endselect.
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
42 | ABAP [선언문] 명령어 정리표 Rev01 [57] | 문바이 | 2011.05.18 | 6230 |
41 |
ABAP Certi 7.0 요약 정리
[101] ![]() | 뽀꼬 | 2011.06.15 | 5662 |
40 |
[ABAPDOCU] 뜯어봅시다. 2
[42] ![]() | 뽀꼬 | 2011.09.06 | 2149 |
39 |
[ABAPDOCU] 뜯어봅시다. 3
[30] ![]() | 뽀꼬 | 2011.09.07 | 938 |
38 |
[ABAPDOCU] 뜯어봅시다 1
[54] ![]() | 뽀꼬 | 2011.09.08 | 1752 |
37 |
[ABAPDOCU] 뜯어봅시다 4
[20] ![]() | 뽀꼬 | 2011.09.08 | 684 |
36 |
[ABAPDOCU] 뜯어봅시다 5
[16] ![]() | 뽀꼬 | 2011.09.09 | 556 |
35 |
[ABAPDOCU] 뜯어봅시다 6
[22] ![]() | 뽀꼬 | 2011.09.14 | 519 |
34 |
[번외] Field symbol과 Data reference
[14] ![]() | 뽀꼬 | 2011.09.14 | 950 |
33 |
[ABAPDOCU] 뜯어봅시다 7
[14] ![]() | 뽀꼬 | 2011.09.15 | 525 |
32 |
[ABAPDOCU] 뜯어봅시다 8
[14] ![]() | 뽀꼬 | 2011.09.19 | 466 |
31 |
[ABAPDOCU] 뜯어봅시다 9
[15] ![]() | 뽀꼬 | 2011.09.20 | 386 |
30 |
[ABAPDOCU] 뜯어봅시다 10
[14] ![]() | 뽀꼬 | 2011.09.22 | 389 |
29 |
[ABAPDOCU] 뜯어봅시다 11
[14] ![]() | 뽀꼬 | 2011.09.26 | 385 |
28 |
[ABAPDOCU] 뜯어봅시다 12
[7] ![]() | 뽀꼬 | 2011.09.28 | 294 |
27 |
[ABAPDOCU] 뜯어봅시다 13
[7] ![]() | 뽀꼬 | 2011.09.29 | 260 |
26 |
[ABAPDOCU] 뜯어봅시다 14
[10] ![]() | 뽀꼬 | 2011.09.30 | 275 |
25 |
[ABAPDOCU] 뜯어봅시다 15
[7] ![]() | 뽀꼬 | 2011.10.04 | 315 |
24 |
[ABAPDOCU] 뜯어봅시다 16
[8] ![]() | 뽀꼬 | 2011.10.07 | 285 |
23 |
[ABAPDOCU] 뜯어봅시다 17
[6] ![]() | 뽀꼬 | 2011.10.11 | 485 |
감사합니다.. 수고 많으셨네요.. ㅎㅎ 대단 하세요..