Otvorite SQL & Izvorni SQL u SAP ABAP-u

Sadržaj:

Anonim
Cilj ovog vodiča nije naučiti vas SQLu ili konceptima baze podataka, već vas upoznati s SQL raznolikošću u ABAP-u

U programskom jeziku ABAP / 4 koriste se dvije vrste SQL-a.

  1. NATIVNI SQL
  2. OTVORI SQL.
Open SQL omogućuje vam pristup tablicama baze podataka deklariranim u ABAP rječniku bez obzira na platformu baze podataka koju koristi R / 3 sustav.

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
Primjer
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ĐENJE ENDEXEC.
Ne 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.

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.
Smanjite količinu prenesenih podataka
  • Ograničite broj linija
  • Ako su iz tablice potrebna samo određena polja, upotrijebite naredbu SELECT U ...
  • Ograniči broj stupaca
  • Koristite agregatne funkcije
Smanjite broj prijenosa podataka
  • 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
Smanjite općenite troškove pretraživanja
  • Koristite polja indeksa u klauzuli where
  • Kad pristupate bazama podataka, uvijek osigurajte da se koristi ispravan indeks.
Smanjite opterećenje baze podataka
  • Međuspremnik
  • Logičke baze podataka
  • Izbjegavajte ponovljeni pristup bazi podataka
Korištenje internih tablica za međuspremnik zapisa
  • 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.