Otvoriť SQL & Natívny SQL v systéme SAP ABAP

Obsah:

Anonim
Cieľom tohto tutoriálu nie je naučiť vás koncepty SQL alebo databázy, ale predstaviť vám rozmanitosť SQL v ABAP

V programovacom jazyku ABAP / 4 sa používajú dva typy SQL.

  1. PRÍRODNÝ SQL
  2. OTVORENÉ SQL.
Open SQL vám umožňuje prístup k databázovým tabuľkám deklarovaným v slovníku ABAP bez ohľadu na databázovú platformu, ktorú systém R / 3 používa.

Natívny SQL umožňuje používať databázové príkazy SQL v programe ABAP / 4. To znamená, že môžete použiť databázové tabuľky, ktoré nespravuje slovník ABAP, a preto integrovať údaje, ktoré nie sú súčasťou systému R / 3.

Open SQL sa skladá zo sady príkazov ABAP, ktoré vykonávajú operácie s centrálnou databázou v systéme R / 3. Výsledky operácií a chybové hlásenia sú nezávislé od použitého databázového systému. Open SQL tak poskytuje jednotnú syntax a sémantiku pre všetky databázové systémy podporované SAP. Programy ABAP, ktoré používajú iba príkazy Open SQL, budú fungovať v ľubovoľnom systéme R / 3 bez ohľadu na používaný databázový systém. Otvorené príkazy SQL môžu pracovať iba s databázovými tabuľkami, ktoré boli vytvorené v slovníku ABAP.

Základné otvorené príkazy SQL

  • VYBERTE
  • VLOŽTE
  • AKTUALIZÁCIA
  • ZMENIŤ
  • ODSTRÁNIŤ
  • OTVORENÝ KURZOR,? NAČÍTAŤ,? ZATVORENÉ KURZOR
Príklad
TABUĽKY KNIHA.KURZOR TYPU ÚDAJOV C,WA AKO SBOOK.OPEN CURSOR C FOR SELECT * FROM SBOOK WHERE CARRID = 'LH'A CONNID = '0400'A FLDATE = '19950228'OBJEDNÁVKA PRIMÁRNYM KLÍČOM.DO.ZÍSKAJTE ĎALŠÍ KURZOR C DO WA.AK SY-SUBRC <> 0.ZATVORIŤ KURZOR C.VÝCHOD.KONIEC AK.NAPÍŠTE: / WA-BOOKID, WA-VLASTNÉ, WA-VLASTNÉ,WA-Fajčiar, WA-LUGGWEIGHT, WA-WUNIT,WA-FAKTÚRA.KONIEC.

Výstupný zoznam cestujúcich pre let Lufthansa 0400 dňa 28-02.1995:

Otvorte návratové kódy SQL

Všetky príkazy Open SQL vyplňujú nasledujúce dve systémové polia návratovými kódmi.

SY-SUBRC

Po každom príkaze Open SQL obsahuje systémové pole SY-SUBRC hodnotu 0, ak bola operácia úspešná, inú hodnotu ako 0, ak nie.

SY-DBCNT

Po príkaze Open SQL obsahuje systémové pole SY-DBCNT počet spracovaných riadkov databázy.

Natívne SQL

Ako už bolo spomenuté, natívny SQL umožňuje používať v databáze ABAP príkazy SQL špecifické pre databázu.

Ak chcete použiť natívny príkaz SQL, musíte mu predchádzať príkaz EXEC SQL a nasledovať ho príkazom ENDEXEC.

Syntax

EXEC SQL [VYKONÁVAŤ 
].ENDEXEC.
Po natívnych príkazoch SQL nie je žiadna bodka. Okrem toho použitie obrátených čiarok (") alebo hviezdičky (*) na začiatku riadku v natívnom príkaze SQL nezavádza komentár, ako by to bolo v bežnej syntaxe ABAP. Musíte vedieť, či sa v názvoch tabuliek a polí rozlišujú malé a veľké písmená. citlivé vo vami vybranej databáze.

V natívnych príkazoch SQL sa údaje prenášajú medzi databázovou tabuľkou a programom ABAP pomocou hostiteľských premenných. Sú deklarované v programe ABAP a pred nimi je v príkaze natívneho SQL dvojbodka (:). Ako hostiteľské premenné môžete použiť základné štruktúry. Výnimočne sa so štruktúrami v klauzule INTO zaobchádza tak, akoby boli všetky ich polia uvedené jednotlivo.

Rovnako ako v Open SQL, aj po príkaze ENDEXEC obsahuje SY-DBCNT počet spracovaných riadkov. Takmer vo všetkých prípadoch obsahuje SY-SUBRC hodnotu 0 za príkazom ENDEXEC.

Otvorte pravidlá výkonnosti SQL

Na zlepšenie výkonu SQL a naopak programu ABAP by sa malo dbať na nasledujúce pravidlá -

Udržujte výslednú sadu malú

  • Použitie klauzuly where
  • Ak sa z databázy vyžaduje iba jeden záznam, vždy, keď je to možné, použite príkaz VYBER SINGLE.
Minimalizujte množstvo prenesených údajov
  • Obmedzte počet riadkov
  • Ak sa od tabuľky požadujú iba určité polia, použite príkaz SELECT INTO ...
  • Obmedziť počet stĺpcov
  • Používajte agregačné funkcie
Minimalizujte počet prenosov údajov
  • Nepoužívajte vnorené vybrané slučky
  • Alternatívnou možnosťou je použiť príkaz SELECT… FOR ALL ENTRIES. Tento príkaz môže byť často oveľa efektívnejší ako vykonávanie veľkého počtu príkazov SELECT alebo SELECT SINGLE počas LOOP internej tabuľky.
  • Používajte zobrazenia slovníka
  • Použite spojenie v klauzule FROM
  • V doložke where použite poddotazy
Minimalizujte réžiu vyhľadávania
  • V klauzuli where použite indexové polia
  • Pri prístupe k databázam sa vždy ubezpečte, že sa používa správny index.
Znížte zaťaženie databázy
  • Ukladanie do vyrovnávacej pamäte
  • Logické databázy
  • Zabráňte opakovanému prístupu do databázy
Použitie interných tabuliek na ukladanie do vyrovnávacej pamäte
  • Aby sa zabránilo opakovanému vykonávaniu toho istého príkazu SELECT (a teda aj duplicitných výberov), môže sa na zlepšenie výkonu použiť interná tabuľka typu HASHED.