Otwórz SQL & Natywny SQL w SAP ABAP

Spisie treści:

Anonim
Celem tego samouczka nie jest nauczenie Cię pojęć dotyczących języka SQL lub baz danych, ale wprowadzenie w różnorodność języka SQL w ABAP

W języku programowania ABAP / 4 używane są dwa typy SQL.

  1. NATIVE SQL
  2. OPEN SQL.
Open SQL umożliwia dostęp do tabel bazy danych zadeklarowanych w słowniku ABAP niezależnie od platformy bazodanowej, z której korzysta system R / 3.

Native SQL umożliwia używanie instrukcji SQL specyficznych dla bazy danych w programie ABAP / 4. Oznacza to, że można używać tabel bazy danych, które nie są administrowane przez słownik ABAP, a zatem integrować dane, które nie są częścią systemu R / 3.

Open SQL składa się z zestawu instrukcji ABAP, które wykonują operacje na centralnej bazie danych w systemie R / 3. Wyniki operacji i wszelkie komunikaty o błędach są niezależne od używanego systemu bazy danych. W ten sposób Open SQL zapewnia jednolitą składnię i semantykę dla wszystkich systemów baz danych obsługiwanych przez SAP. Programy ABAP, które używają tylko instrukcji Open SQL, będą działać w każdym systemie R / 3, niezależnie od używanego systemu baz danych. Instrukcje Open SQL mogą działać tylko z tabelami bazy danych, które zostały utworzone w słowniku ABAP.

Podstawowe polecenia Open SQL

  • WYBIERZ
  • WSTAWIĆ
  • AKTUALIZACJA
  • MODYFIKOWAĆ
  • KASOWAĆ
  • KURSOR OTWARTY,? FETCH,? KURSOR ZAMKNIĘTY
Przykład
STOŁY SBOOK.KURSOR TYPU C DANYCH,WA LIKE SBOOK.OTWÓRZ KURSOR C DO WYBORU * Z SBOOK, GDZIE CARRID = 'LH'AND CONNID = '0400'AND FLDATE = „19950228”ZAMÓWIENIE WEDŁUG KLUCZA PODSTAWOWEGO.ZROBIĆ.FETCH NEXT CURSOR C INTO WA.IF SY-SUBRC <> 0.KURSOR ZAMKNIĘCIA C.WYJŚCIE.ENDIF.NAPISZ: / WA-BOOKID, WA-CUSTOMID, WA-CUSTTYPE,WA-SMOKER, WA-LUGGWEIGHT, WA-WUNIT,WA-FAKTURA.ENDDO.

Wyprowadź listę pasażerów na lot Lufthansy 0400 w dniu 28-02.1995:

Otwórz kody zwrotne SQL

Wszystkie instrukcje Open SQL wypełniają następujące dwa pola systemowe kodami powrotu.

SY-SUBRC

Po każdej instrukcji Open SQL pole systemowe SY-SUBRC zawiera wartość 0, jeśli operacja się powiodła, a wartość inną niż 0, jeśli nie.

SY-DBCNT

Po instrukcji Open SQL pole systemowe SY-DBCNT zawiera liczbę przetworzonych wierszy bazy danych.

Natywny SQL

Jak już wspomniano, Native SQL umożliwia użycie instrukcji SQL specyficznych dla bazy danych w programie ABAP.

Aby użyć rodzimej instrukcji SQL, należy poprzedzić ją instrukcją EXEC SQL, a po niej wstawić instrukcję ENDEXEC.

Składnia

EXEC SQL [PERFORMING 
].ENDEXEC.
Po instrukcjach Native SQL nie ma kropki. Ponadto użycie przecinków odwróconych (") lub gwiazdki (*) na początku wiersza w natywnej instrukcji SQL nie wprowadza komentarza, tak jak w przypadku zwykłej składni ABAP. Należy wiedzieć, czy nazwy tabel i pól są pisane małymi literami. wrażliwe w wybranej bazie danych.

W instrukcjach Native SQL dane są transportowane między tabelą bazy danych a programem ABAP przy użyciu zmiennych języka bazowego. Są one zadeklarowane w programie ABAP i poprzedzone w instrukcji Native SQL dwukropkiem (:). Jako zmiennych języka bazowego można używać struktur elementarnych. Wyjątkowo struktury w klauzuli INTO są traktowane tak, jakby wszystkie ich pola zostały wymienione indywidualnie.

Podobnie jak w Open SQL, po instrukcji ENDEXEC SY-DBCNT zawiera liczbę przetworzonych wierszy. W prawie wszystkich przypadkach SY-SUBRC zawiera wartość 0 po instrukcji ENDEXEC.

Open SQL - reguły wydajności

Aby poprawić wydajność SQL, a co za tym idzie programu ABAP, należy zadbać o następujące zasady:

Zachowaj mały zestaw wyników

  • Korzystanie z klauzuli where
  • Jeśli wymagany jest tylko jeden rekord z bazy danych, użyj opcji SELECT SINGLE, gdy tylko jest to możliwe.
Zminimalizuj ilość przesyłanych danych
  • Ogranicz liczbę linii
  • Jeśli w tabeli wymagane są tylko niektóre pola, użyj instrukcji SELECT INTO…
  • Ogranicz liczbę kolumn
  • Użyj funkcji agregujących
Zminimalizuj liczbę transferów danych
  • Unikaj zagnieżdżonych pętli wyboru
  • Alternatywną opcją jest użycie instrukcji SELECT… FOR ALL ENTRIES. Ta instrukcja często może być o wiele bardziej wydajna niż wykonywanie dużej liczby instrukcji SELECT lub SELECT SINGLE podczas pętli wewnętrznej tabeli.
  • Użyj widoków słownika
  • Użyj połączeń w klauzuli FROM
  • Użyj podzapytań w klauzuli where
Zminimalizuj koszty wyszukiwania
  • Użyj pól indeksowych w klauzuli where
  • Podczas uzyskiwania dostępu do baz danych zawsze upewnij się, że używany jest poprawny indeks.
Zmniejsz obciążenie bazy danych
  • Buforowanie
  • Logiczne bazy danych
  • Unikaj wielokrotnego dostępu do bazy danych
Używanie tabel wewnętrznych do buforowania rekordów
  • Aby uniknąć wielokrotnego wykonywania tego samego polecenia SELECT (i tym samym zduplikowanych wyborów), można użyć wewnętrznej tabeli typu HASHED w celu poprawy wydajności.