Atidarykite SQL & Gimtoji SQL SAP ABAP

Šios pamokos tikslas nėra išmokyti SQL ar duomenų bazės sąvokų, bet supažindinti jus su ABAP SQL įvairove

ABAP / 4 programavimo kalboje yra naudojami du SQL tipai.

  1. Gimtoji SQL
  2. ATIDARYTI SQL.
„Open SQL“ leidžia pasiekti ABAP žodyne deklaruotas duomenų bazių lenteles, neatsižvelgiant į duomenų bazės platformą, kurią naudoja R / 3 sistema.

Gimtoji SQL leidžia naudoti duomenų bazėms būdingus SQL sakinius ABAP / 4 programoje. Tai reiškia, kad galite naudoti duomenų bazių lenteles, kurios nėra administruojamos ABAP žodyno, todėl galite integruoti duomenis, kurie nėra R / 3 sistemos dalis.

„Open SQL“ sudaro ABAP sakinių rinkinys, kuris atlieka operacijas centrinėje duomenų bazėje R / 3 sistemoje. Operacijų rezultatai ir visi klaidų pranešimai nepriklauso nuo naudojamos duomenų bazės sistemos. Taigi „Open SQL“ suteikia vienodą sintaksę ir semantiką visoms duomenų bazių sistemoms, kurias palaiko SAP. ABAP programos, naudojančios tik „Open SQL“ sakinius, veiks bet kurioje R / 3 sistemoje, neatsižvelgiant į naudojamą duomenų bazių sistemą. Atviri SQL sakiniai gali veikti tik su duomenų bazių lentelėmis, kurios buvo sukurtos ABAP žodyne.

Pagrindinės „Open SQL“ komandos

  • PASIRINKTI
  • ĮDĖTI
  • ATNAUJINTI
  • KEISTI
  • IŠTRINTI
  • ATIDARYTAS ŽINUTINIS,? FETCH,? UŽDARYTI KURSORĄ
Pavyzdys
LENTELIŲ KNYGA.C DUOMENŲ TIPO ŽYMEKLIS,TIK PATINKA KNYGA.ATIDARYTI žymeklį C PASIRINKTI * IŠ SĄSKAITOS, KUR CARRID = 'LH'IR NĖRA = "0400"IR FLDATE = '19950228'UŽSAKYMAS PAGAL PAGRINDINĮ RAKTĄ.Daryk.PASIŪLYKITE KITĄ ŽENKLĄ C Į WA.JEI SY-SUBRC <> 0.UŽDARYTI CURSORIUS C.IŠEITI.ENDIF.RAŠYTI: / WA-BOOKID, WA-CUSTOMID, WA-CUSTTYPE,WA-SMOKER, WA-LUGGWWIGHT, WA-WUNIT,WA-SĄSKAITA.PABAIGA.

Pateikite „Lufthansa“ skrydžio 0400 1995-02-28 keleivių sąrašą:

Atidarykite SQL grąžinimo kodus

Visi „Open SQL“ sakiniai užpildo šiuos du sistemos laukus grąžinimo kodais.

SY-SUBRC

Po kiekvieno „Open SQL“ sakinio sistemos lauke SY-SUBRC yra 0 reikšmė, jei operacija buvo sėkminga, kita vertė nei 0, jei ne.

SY-DBCNT

Po „Open SQL“ sakinio sistemos lauke SY-DBCNT yra apdorotų duomenų bazės eilučių skaičius.

Gimtoji SQL

Kaip jau minėta, „Native SQL“ leidžia ABAP programoje naudoti konkrečios duomenų bazės SQL sakinius.

Norėdami naudoti „Native SQL“ sakinį, prieš jį turite nurodyti EXEC SQL sakinį ir sekti jį naudodami ENDEXEC sakinį.

Sintaksė

EXEC SQL [VEIKIA ].ENDEXEC.
Po vietinių SQL sakinių nėra laikotarpio. Be to, naudojant atvirkštinius kablelius (") arba žvaigždutę (*) eilutinio pradinio SQL sakinio pradžioje komentaras nepateikiamas, kaip tai daroma įprastoje ABAP sintaksėje. Turite žinoti, ar lentelių ir laukų pavadinimai yra didžiųjų ir mažųjų raidžių. jūsų pasirinktoje duomenų bazėje.

Native SQL sakiniuose duomenys perkeliami tarp duomenų bazės lentelės ir ABAP programos naudojant pagrindinius kintamuosius. Tai deklaruojama ABAP programoje, o prieš Native SQL sakinį prieš ją yra dvitaškis (:). Galite naudoti pagrindines struktūras kaip pagrindinius kintamuosius. Išimtinai INTO sąlygos struktūros traktuojamos taip, tarsi visi jų laukai būtų išvardyti atskirai.

Kaip ir „Open SQL“, po ENDEXEC sakinio, SY-DBCNT yra apdorotų eilučių skaičius. Beveik visais atvejais SY-SUBRC po ENDEXEC sakinio yra reikšmė 0.

Atidarykite SQL - našumo taisykles

Norint pagerinti SQL našumą ir savo ruožtu ABAP programą, reikėtų pasirūpinti šiomis taisyklėmis:

Rezultatų rinkinį laikykite mažą

  • Naudojant sąlygą kur
  • Jei iš duomenų bazės reikia tik vieno įrašo, naudokite „SELECT SINGLE“, kai tik įmanoma.
Sumažinkite perduotų duomenų kiekį
  • Apribokite eilučių skaičių
  • Jei lentelėje reikia nurodyti tik tam tikrus laukus, naudokite teiginį SELECT INTO…
  • Apriboti stulpelių skaičių
  • Naudokite suvestines funkcijas
Sumažinkite duomenų perdavimo skaičių
  • Venkite įdėtų rinktinių kilpų
  • Alternatyvi galimybė yra naudoti sakinį SELECT… VISIEMS ĮEJIMAMS. Šis teiginys dažnai gali būti daug efektyvesnis nei atlikti daugybę SELECT arba SELECT SINGLE sakinių per vidinės lentelės LOOP.
  • Naudokite žodyno rodinius
  • Sąlygoje FROM naudokite prisijungimus
  • Naudokite paklausas kur sakinyje
Sumažinkite paieškos pridėtines išlaidas
  • Naudokite indekso laukus kur sakinyje
  • Prieidami prie duomenų bazių visada įsitikinkite, kad naudojamas teisingas indeksas.
Sumažinkite duomenų bazės apkrovą
  • Buferinis
  • Loginės duomenų bazės
  • Venkite pakartotinės prieigos prie duomenų bazės
Vidinių lentelių naudojimas įrašų buferiui
  • Norint išvengti to paties „SELECT“ vykdymo kelis kartus (ir todėl reikia turėti pasikartojančius pasirinkimus), našumui pagerinti galima naudoti vidinę HASHED tipo lentelę.

Įdomios straipsniai...