Otevřít SQL & Nativní SQL v SAP ABAP

Obsah:

Anonim
Cílem tohoto kurzu není naučit vás koncepty SQL nebo databáze, ale seznámit vás s rozmanitostí SQL v ABAP

V programovacím jazyce ABAP / 4 se používají dva typy SQL.

  1. NATIVNÍ SQL
  2. OPEN SQL.
Open SQL umožňuje přístup k databázovým tabulkám deklarovaným ve slovníku ABAP bez ohledu na databázovou platformu, kterou systém R / 3 používá.

Nativní SQL umožňuje používat příkazy SQL specifické pro databázi v programu ABAP / 4. To znamená, že můžete použít databázové tabulky, které nejsou spravovány slovníkem ABAP, a proto integrovat data, která nejsou součástí systému R / 3.

Open SQL se skládá ze sady příkazů ABAP, které provádějí operace s centrální databází v systému R / 3. Výsledky operací a jakékoli chybové zprávy jsou nezávislé na používaném databázovém systému. Open SQL tedy poskytuje jednotnou syntaxi a sémantiku pro všechny databázové systémy podporované SAP. Programy ABAP, které používají pouze příkazy Open SQL, budou fungovat v jakémkoli systému R / 3 bez ohledu na používaný databázový systém. Otevřené příkazy SQL mohou pracovat pouze s databázovými tabulkami, které byly vytvořeny ve slovníku ABAP.

Základní otevřené příkazy SQL

  • VYBRAT
  • VLOŽIT
  • AKTUALIZACE
  • UPRAVIT
  • VYMAZAT
  • OTEVŘENÝ KURZOR,? NAČÍT,? ZAVŘENÝ KURZOR
Příklad
TABLES SBOOK.KURZOR TYPU DATOVÝCH C,WA LIKE SBOOK.OPEN CURSOR C FOR SELECT * FROM SBOOK WHERE CARRID = 'LH'AND CONNID = '0400'A FLDATE = '19950228'OBJEDNAT PRIMÁRNÍM KLÍČEM.DĚLAT.ZÍSKEJTE DALŠÍ KURZOR C DO WA.IF SY-SUBRC <> 0.ZAVŘÍT KURZOR C.VÝSTUP.ENDIF.ZÁPIS: / WA-BOOKID, WA-CUSTOMID, WA-CUSTTYPE,WA-SMOKER, WA-LUGGWEIGHT, WA-WUNIT,WA-FAKTURA.KONEC.

Výstup seznamu cestujících pro let Lufthansa 0400 dne 28-02.1995:

Otevřete návratové kódy SQL

Všechny otevřené příkazy SQL vyplňují následující dvě systémová pole návratovými kódy.

SY-SUBRC

Po každém příkazu Open SQL obsahuje systémové pole SY-SUBRC hodnotu 0, pokud byla operace úspěšná, hodnotu jinou než 0, pokud ne.

SY-DBCNT

Po příkazu Open SQL obsahuje systémové pole SY-DBCNT počet zpracovaných řádků databáze.

Nativní SQL

Jak již bylo zmíněno, nativní SQL vám umožňuje používat příkazy SQL specifické pro databázi v programu ABAP.

Chcete-li použít nativní příkaz SQL, musíte před ním uvést příkaz EXEC SQL a následovat jej příkazem ENDEXEC.

Syntax

EXEC SQL [PROVÁDĚNÍ 
].ENDEXEC.
Po nativních příkazech SQL není žádné období. Kromě toho použití obrácených čárek (") nebo hvězdičky (*) na začátku řádku v nativním příkazu SQL nezavádí komentář, jako by to bylo v běžné syntaxi ABAP. Musíte vědět, zda názvy tabulek a polí rozlišují velká a malá písmena. citlivé ve vybrané databázi.

V nativních příkazech SQL jsou data přenášena mezi databázovou tabulkou a programem ABAP pomocí hostitelských proměnných. Ty jsou deklarovány v programu ABAP a v příkazu Native SQL předchází dvojtečkou (:). Jako hostitelské proměnné můžete použít základní struktury. Výjimečně se se strukturami v klauzuli INTO zachází, jako by všechna jejich pole byla uvedena jednotlivě.

Stejně jako v Open SQL obsahuje i po příkazu ENDEXEC počet zpracovaných řádků SY-DBCNT. Téměř ve všech případech obsahuje SY-SUBRC po příkazu ENDEXEC hodnotu 0.

Otevřete SQL - Pravidla výkonu

Abychom zlepšili výkon SQL a naopak programu ABAP, měli bychom se postarat o následující pravidla -

Udržujte sadu výsledků malou

  • Použití klauzule where
  • Pokud je z databáze vyžadován pouze jeden záznam, použijte SELECT SINGLE, kdykoli je to možné.
Minimalizujte množství přenesených dat
  • Omezte počet řádků
  • Pokud jsou z tabulky vyžadována pouze určitá pole, použijte příkaz SELECT INTO…
  • Omezit počet sloupců
  • Použijte agregační funkce
Minimalizujte počet datových přenosů
  • Vyhněte se vnořeným vybraným smyčkám
  • Alternativní možností je použít příkaz SELECT… FOR ALL ENTRIES. Tento příkaz může být často mnohem efektivnější než provádění velkého počtu příkazů SELECT nebo SELECT SINGLE během smyčky interní tabulky.
  • Použijte zobrazení slovníku
  • Použijte spojení v klauzuli FROM
  • Použijte poddotazy v klauzuli where
Minimalizujte režii vyhledávání
  • V klauzuli where použijte indexová pole
  • Při přístupu k databázím se vždy ujistěte, že se používá správný index.
Snižte zatížení databáze
  • Vyrovnávací paměť
  • Logické databáze
  • Vyhněte se opakovanému přístupu k databázi
Využití interních tabulek k ukládání záznamů do vyrovnávací paměti
  • Abyste se vyhnuli provádění stejného SELECTu vícekrát (a proto máte duplicitní výběry), můžete ke zlepšení výkonu použít interní tabulku typu HASHED.