Odprite SQL & Izvorni SQL v SAP ABAP

Kazalo:

Anonim
Cilj te vadnice ni naučiti vas konceptov SQL ali baz podatkov, temveč vas seznaniti z različnostjo SQL v programu ABAP

V programskem jeziku ABAP / 4 se uporabljata dve vrsti SQL.

  1. NATIVNI SQL
  2. ODPRI SQL.
Open SQL vam omogoča dostop do tabel baze podatkov, prijavljenih v slovarju ABAP, ne glede na platformo baze podatkov, ki jo uporablja sistem R / 3.

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
Primer
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 [IZVAJANJE ].ENDEXEC.
Po 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.

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.
Zmanjšajte količino prenesenih podatkov
  • Omejite število vrstic
  • Če so iz tabele potrebna le nekatera polja, uporabite stavek SELECT INTO…
  • Omeji število stolpcev
  • Uporabite agregatne funkcije
Zmanjšajte število prenosov podatkov
  • 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
Zmanjšajte režijske stroške iskanja
  • V stavku where uporabite polja indeksa
  • Ko dostopate do baz podatkov, vedno poskrbite, da se uporablja pravi indeks.
Zmanjšajte nalaganje baze podatkov
  • Predpomnjenje
  • Logične zbirke podatkov
  • Izogibajte se ponavljajočemu se dostopu do baze podatkov
Uporaba notranjih tabel za medpomnjenje zapisov
  • Da bi se izognili večkratnemu izvajanju istega SELECT (in zato imajo podvojene selekcije), lahko za izboljšanje zmogljivosti uporabimo interno tabelo tipa HASHED.