Отворете SQL & Вграден SQL в SAP ABAP

Съдържание:

Anonim
Целта на този урок не е да ви научи на SQL или концепции за бази данни, а да ви запознае с SQL разнообразието в ABAP

В езика за програмиране ABAP / 4 се използват два типа SQL.

  1. НАТИВЕН SQL
  2. ОТВОРЕТЕ SQL.
Open SQL ви позволява достъп до таблиците на базата данни, декларирани в речника ABAP, независимо от платформата на базата данни, която системата R / 3 използва.

Native SQL ви позволява да използвате специфични за базата данни SQL изрази в програма ABAP / 4. Това означава, че можете да използвате таблици на база данни, които не се администрират от речника ABAP, и следователно да интегрирате данни, които не са част от системата R / 3.

Open SQL се състои от набор от ABAP изрази, които извършват операции над централната база данни в системата R / 3. Резултатите от операциите и съобщенията за грешки са независими от използваната система от бази данни. По този начин Open SQL осигурява еднакъв синтаксис и семантика за всички системи от бази данни, поддържани от SAP. Програмите ABAP, които използват само отворени SQL изрази, ще работят във всяка R / 3 система, независимо от използваната система от бази данни. Отворените SQL изрази могат да работят само с таблици на бази данни, които са създадени в речника ABAP.

Основни отворени SQL команди

  • ИЗБЕРЕТЕ
  • ВМЕСТЕТЕ
  • АКТУАЛИЗИРАНЕ
  • МОДИФИЦИРАЙТЕ
  • ИЗТРИЙ
  • ОТВОРЕН КУРСОР,? FETCH,? CLOSE CURSOR
Пример
МАСИ ЗАПИСВАНЕ.КУРСОР ЗА ТИП НА ДАННИ,БЪДЕ КАТО КНИГА.ОТВОРЕТЕ КУРСОР C ЗА ИЗБЕРЕТЕ * ОТ КНИГА КЪДЕ КАРИД = 'LH'И ПОНЯТ = '0400'И FLDATE = '19950228'ПОРЪЧКА ПО ОСНОВЕН КЛЮЧ.НАПРАВЕТЕ.ВЗЕМЕТЕ СЛЕДВАЩИЯ КУРСОР C В WA.АКО SY-SUBRC <> 0.ЗАКРИТЕ КУРСОР C.ИЗХОД.ENDIF.ПИШЕТЕ: / WA-BOOKID, WA-CUSTOMID, WA-CUSTTYPE,WA-SMOKER, WA-LUGGWEIGHT, WA-WUNIT,WA-ФАКТУРА.ENDDO.

Изведете списъка с пътници за полет на Lufthansa 0400 на 28-02.1995:

Отворете SQL кодове за връщане

Всички отворени SQL изрази попълват следните две системни полета с кодове за връщане.

SY-SUBRC

След всеки оператор Open SQL системното поле SY-SUBRC съдържа стойността 0, ако операцията е била успешна, стойност различна от 0, ако не.

SY-DBCNT

След оператор Open SQL системното поле SY-DBCNT съдържа броя на обработените редове на базата данни.

Роден SQL

Както вече споменахме, Native SQL ви позволява да използвате специфични за базата данни SQL изрази в програма ABAP.

За да използвате Native SQL оператор, трябва да го предшествате с инструкцията EXEC SQL и да го следвате с инструкцията ENDEXEC.

Синтаксис

EXEC SQL [ИЗПЪЛНЕНИЕ <форма>].<Вътрешен SQL израз>ENDEXEC.
Няма период след Native SQL изрази. Освен това, използването на обърнати запетаи (") или звездичка (*) в началото на ред в родния SQL оператор не въвежда коментар, както би било в нормалния синтаксис на ABAP. Трябва да знаете дали имената на таблици и полета са регистър на буквите чувствителна в избраната от вас база данни.

В собствените SQL изрази данните се транспортират между таблицата на базата данни и програмата ABAP, като се използват променливи на хоста. Те са декларирани в програмата ABAP и предшествани в оператора Native SQL с двоеточие (:). Можете да използвате елементарни структури като хост променливи. По изключение структурите в клаузата INTO се третират така, сякаш всичките им полета са изброени поотделно.

Както в Open SQL, след оператора ENDEXEC, SY-DBCNT съдържа броя на обработените редове. В почти всички случаи SY-SUBRC съдържа стойността 0 след оператора ENDEXEC.

Open SQL - Правила за изпълнение

За да подобрите производителността на SQL и на свой ред програмата ABAP, трябва да се погрижите за следните правила -

Дръжте набора от резултати малък

  • Използване на клаузата where
  • Ако от базата данни се изисква само един запис, използвайте SELECT SINGLE, когато е възможно.
Минимизирайте количеството прехвърлени данни
  • Ограничете броя на редовете
  • Ако от таблица се изискват само определени полета, използвайте оператора SELECT INTO…
  • Ограничете броя на колоните
  • Използвайте обобщени функции
Минимизирайте броя на трансферите на данни
  • Избягвайте вложени цикли за избор
  • Алтернативен вариант е използването на оператора SELECT ... FOR ALL ENTRIES. Този оператор често може да бъде много по-ефективен от извършването на голям брой SELECT или SELECT SINGLE изрази по време на LOOP на вътрешна таблица.
  • Използвайте изгледи на речника
  • Използвайте Joins в клаузата FROM
  • Използвайте подзаявки в клаузата where
Минимизиране на режийните за търсене
  • Използвайте полета за индекс в клаузата where
  • При достъп до бази данни винаги се уверявайте, че се използва правилният индекс.
Намалете натоварването на базата данни
  • Буфериране
  • Логически бази данни
  • Избягвайте многократен достъп до база данни
Използване на вътрешни таблици за буферни записи
  • За да се избегне изпълнението на един и същ SELECT няколко пъти (и следователно да има дублирани селекти), може да се използва вътрешна таблица от тип HASHED за подобряване на производителността.