V programskem jeziku ABAP / 4 se uporabljata dve vrsti SQL.
- NATIVNI SQL
- ODPRI SQL.
Izvorni SQL vam omogoča uporabo stavkov SQL, specifičnih za bazo podatkov, v programu ABAP / 4. To pomeni, da lahko uporabljate tabele baz podatkov, ki jih ne upravlja slovar ABAP, in zato vključite podatke, ki niso del sistema R / 3.
Open SQL je sestavljen iz nabora stavkov ABAP, ki izvajajo operacije nad centralno bazo podatkov v sistemu R / 3. Rezultati operacij in morebitna sporočila o napakah so neodvisni od sistema baz podatkov, ki se uporablja. Open SQL tako zagotavlja enotno sintakso in semantiko za vse sisteme baz podatkov, ki jih podpira SAP. Programi ABAP, ki uporabljajo samo stavke Open SQL, bodo delovali v katerem koli sistemu R / 3, ne glede na uporabljeni sistem baz podatkov. Odprti stavki SQL lahko delujejo samo s tabelami zbirke podatkov, ki so bile ustvarjene v slovarju ABAP.
Osnovni odprti ukazi SQL
- IZBERI
- VSTAVI
- NADGRADNJA
- SPREMENI
- IZBRIŠI
- ODPRTI KURSOR,? FETCH,? CLOSE KURSOR
MIZE PRIPRAVI.KURZOR VRSTE PODATKOV C,BODI KOT KNJIGA.ODPRITE KURSOR C ZA IZBIRO * IZ KNJIGE, KJER JE CARRID = 'LH'IN CONNID = '0400'IN FLDATE = '19950228'NAROČILO PO OSNOVNEM KLJUČU.DO.PRIDOBI NASLEDNJI KURSOR C V WA.ČE JE SY-SUBRC <> 0.ZAPRTI KURZOR C.IZHOD.ENDIF.PIŠI: / WA-BOOKID, WA-CUSTOMID, WA-CUSTTYPE,WA-SMOKER, WA-LUGGWEIGHT, WA-WUNIT,WA-RAČUN.ENDDO.
Objavite seznam potnikov za let Lufthansa 0400 dne 28. februarja 1995:
Odprite povratne kode SQL
Vsi stavki Open SQL izpolnjujejo naslednja dva sistemska polja s povratnimi kodami.SY-SUBRC
Po vsakem stavku Open SQL sistemsko polje SY-SUBRC vsebuje vrednost 0, če je bila operacija uspešna, vrednost, ki ni 0, če ni.
SY-DBCNT
Po stavku Open SQL sistemsko polje SY-DBCNT vsebuje število obdelanih vrstic baze podatkov.
Izvorni SQL
Kot smo že omenili, Native SQL omogoča uporabo stavkov SQL, specifičnih za bazo podatkov, v programu ABAP.Če želite uporabiti stavek Native SQL, morate pred stavkom EXEC SQL in slediti stavku ENDEXEC.
Sintaksa
EXEC SQL [IZVAJANJEPo stavkih Native SQL ni obdobja. Poleg tega uporaba obrnjenih vejic (") ali zvezdice (*) na začetku vrstice v izvornem stavku SQL ne uvede komentarja kot v običajni sintaksi ABAP. Vedeti morate, ali so imena tabel in polj velika in majhna občutljivo v izbrani bazi podatkov.]. ENDEXEC.
V izvornih stavkih SQL se podatki prenašajo med tabelo baze podatkov in programom ABAP z uporabo gostiteljskih spremenljivk. Ti so deklarirani v programu ABAP in pred njimi v stavku Native SQL dvopičje (:). Elementarne strukture lahko uporabite kot gostiteljske spremenljivke. Izjemoma se strukture v klavzuli INTO obravnavajo, kot da so vsa njihova polja navedena posebej.
Tako kot v odprtem SQL, tudi po stavku ENDEXEC tudi SY-DBCNT vsebuje število obdelanih vrstic. V skoraj vseh primerih SY-SUBRC vsebuje vrednost 0 po stavku ENDEXEC.
Odprti SQL - Pravila o zmogljivosti
Da bi izboljšali delovanje SQL in programa ABAP, je treba poskrbeti za naslednja pravila -Nabor rezultatov naj bo majhen
- Uporaba klavzule where
- Če je iz baze podatkov potreben le en zapis, uporabite SELECT SINGLE, kadar je le mogoče.
- Omejite število vrstic
- Če so iz tabele potrebna le nekatera polja, uporabite stavek SELECT
INTO… - Omeji število stolpcev
- Uporabite agregatne funkcije
- Izogibajte se ugnezdenim izbirnim zankam
- Druga možnost je uporaba stavka SELECT ... FOR ALL ENTRIES. Ta stavek je pogosto lahko veliko bolj učinkovit kot izvajanje velikega števila stavkov SELECT ali SELECT SINGLE med LOOP interne tabele.
- Uporabite poglede slovarja
- V klavzuli FROM uporabite Pridružitve
- Uporabite podpoizvedbe v stavku where
- V stavku where uporabite polja indeksa
- Ko dostopate do baz podatkov, vedno poskrbite, da se uporablja pravi indeks.
- Predpomnjenje
- Logične zbirke podatkov
- Izogibajte se ponavljajočemu se dostopu do baze podatkov
- Da bi se izognili večkratnemu izvajanju istega SELECT (in zato imajo podvojene selekcije), lahko za izboljšanje zmogljivosti uporabimo interno tabelo tipa HASHED.