U programskom jeziku ABAP / 4 koriste se dvije vrste SQL-a.
- NATIVNI SQL
- OTVORI SQL.
Izvorni SQL omogućuje vam upotrebu SQL izraza specifičnih za bazu podataka u programu ABAP / 4. To znači da možete koristiti tablice baze podataka kojima ne upravlja ABAP rječnik, pa stoga integrirati podatke koji nisu dio R / 3 sustava.
Otvoreni SQL sastoji se od skupa ABAP izraza koji izvode operacije nad središnjom bazom podataka u R / 3 sustavu. Rezultati operacija i sve poruke o pogreškama neovisni su o sustavu baze podataka koji se koristi. Open SQL tako pruža jedinstvenu sintaksu i semantiku za sve sustave baza podataka koje podržava SAP. ABAP programi koji koriste samo otvorene SQL izraze radit će u bilo kojem R / 3 sustavu, bez obzira na sustav baza podataka koji se koristi. Otvoreni SQL izrazi mogu raditi samo s tablicama baze podataka koje su kreirane u ABAP rječniku.
Osnovne otvorene SQL naredbe
- IZABERI
- UMETNUTI
- AŽURIRAJ
- IZMJENITI
- IZBRISATI
- OTVORENI KURSOR,? FETCH,? CLOSE KURSOR
STOLOVI SE ODNOSE.KURSOR TIPA PODATAKA C,WA KAO KNJIGA.OTVORITE KURSOR C ZA ODABIR * IZ KNJIGE GDJE JE CARRID = 'LH'I POVJERI = '0400'I FLDATE = '19950228'NARUČI PO OSNOVNOM KLJUČU.ČINI.DOLAZITE Sljedeći kursor C u WA.AKO JE SY-SUBRC <> 0.ZATVORENI KURSOR C.IZLAZ.ZAVRŠI AKO.NAPIŠI: / WA-BOOKID, WA-CUSTOMID, WA-CUSTTYPE,WA-SMOKER, WA-LUGGWEIGHT, WA-WUNIT,WA-RAČUN.ENDDO.
Iznesite popis putnika za let Lufthansa 0400 28. 02. 1995:
Otvorite povratne kodove SQL-a
Svi otvoreni SQL izrazi ispunjavaju sljedeća dva sistemska polja povratnim kodovima.SY-SUBRC
Nakon svake naredbe Open SQL, sistemsko polje SY-SUBRC sadrži vrijednost 0 ako je operacija bila uspješna, vrijednost koja nije 0 ako nije.
SY-DBCNT
Nakon Open SQL izraza, sistemsko polje SY-DBCNT sadrži broj obrađenih linija baze podataka.
Izvorni SQL
Kao što je već spomenuto, Native SQL omogućuje vam upotrebu SQL izraza specifičnih za bazu podataka u ABAP programu.Da biste koristili Native SQL izraz, morate mu prethoditi s EXEC SQL izrazom i slijediti ga s ENDEXEC izrazom.
Sintaksa
EXEC SQL [IZVOĐENJENe postoji razdoblje nakon Native SQL izraza. Nadalje, upotreba obrnutih zareza (") ili zvjezdice (*) na početku retka u izvornom SQL izrazu ne uvodi komentar kao u normalnoj sintaksi ABAP. Morate znati jesu li imena tablice i polja velika i mala. osjetljiv u odabranoj bazi podataka.ENDEXEC.
U izvornim SQL izrazima podaci se prenose između tablice baze podataka i ABAP programa pomoću varijabli hosta. Oni su deklarirani u programu ABAP, a ispred njih u Native SQL izrazu dvotočka (:). Možete koristiti elementarne strukture kao varijable hosta. Iznimno, strukture u klauzuli INTO tretiraju se kao da su sva njihova polja navedena pojedinačno.
Kao i u Open SQL-u, nakon naredbe ENDEXEC, SY-DBCNT sadrži broj obrađenih redaka. U gotovo svim slučajevima SY-SUBRC sadrži vrijednost 0 nakon izraza ENDEXEC.
Otvoreni SQL - Pravila izvedbe
Da bi se poboljšala izvedba SQL-a, a zauzvrat i programa ABAP, treba voditi računa o sljedećim pravilima:Neka skup rezultata bude mali
- Koristeći klauzulu where
- Ako je iz baze podataka potreban samo jedan zapis, upotrijebite SELECT SINGLE kad god je to moguće.
- Ograničite broj linija
- Ako su iz tablice potrebna samo određena polja, upotrijebite naredbu SELECT
U ... - Ograniči broj stupaca
- Koristite agregatne funkcije
- Izbjegavajte ugniježđene krugove odabira
- Alternativna opcija je upotreba naredbe SELECT ... FOR ALL ENTRIES. Ova izjava često može biti puno učinkovitija od izvođenja velikog broja SELECT ili SELECT SINGLE izraza tijekom LOOP-a interne tablice.
- Koristite preglede rječnika
- Upotrijebite Joins u klauzuli FROM
- Upotrijebite podupite u klauzuli where
- Koristite polja indeksa u klauzuli where
- Kad pristupate bazama podataka, uvijek osigurajte da se koristi ispravan indeks.
- Međuspremnik
- Logičke baze podataka
- Izbjegavajte ponovljeni pristup bazi podataka
- Da bi se izbjeglo izvršavanje istog SELECT-a više puta (i stoga imaju dvostruke odabire), interna tablica tipa HASHED može se koristiti za poboljšanje performansi.