Atvērt SQL & Vietējā SQL SAP ABAP

Satura rādītājs:

Anonim
Šīs apmācības mērķis nav iemācīt jums SQL vai datu bāzes koncepcijas, bet gan iepazīstināt jūs ar SQL daudzveidību ABAP

ABAP / 4 programmēšanas valodā tiek izmantoti divu veidu SQL.

  1. DZIMTĀ SQL
  2. ATVĒRT SQL.
Atvērtā SQL ļauj piekļūt ABAP vārdnīcā deklarētajām datu bāzes tabulām neatkarīgi no datu bāzes platformas, kuru izmanto R / 3 sistēma.

Vietējā SQL ļauj ABAP / 4 programmā izmantot datu bāzei specifiskus SQL priekšrakstus. Tas nozīmē, ka varat izmantot datu bāzes tabulas, kuras nepārvalda ABAP vārdnīca, un tādējādi integrēt datus, kas nav R / 3 sistēmas daļa.

Atvērtā SQL sastāv no ABAP priekšrakstu kopas, kas veic darbības centrālajā datu bāzē R / 3 sistēmā. Darbību rezultāti un visi kļūdu ziņojumi ir neatkarīgi no izmantotās datu bāzes sistēmas. Tādējādi atvērtā SQL nodrošina vienotu sintaksi un semantiku visām SAP atbalstītajām datu bāzu sistēmām. ABAP programmas, kas izmanto tikai Open SQL priekšrakstus, darbosies jebkurā R / 3 sistēmā neatkarīgi no izmantotās datu bāzes sistēmas. Atvērtie SQL priekšraksti var darboties tikai ar datu bāzes tabulām, kas izveidotas ABAP vārdnīcā.

Pamata atvērtās SQL komandas

  • SELECT
  • IELIKT
  • ATJAUNINĀT
  • PĀRVEIDOT
  • DZĒST
  • ATVĒRTS KURS, FETCH, AIZVĒRT KURSU
Piemērs
GALDA GRĀMATA.DATU C TIPA KURSS,WA LIKE GRĀMATA.ATVĒRT KURŠU C ATLASEI * NO GRĀMATAS, KURIEM CARRID = 'LH'UN PIEVIENOJOT = '0400'UN FLDATE = '19950228'PASŪTĪJUMS PAMATLABĀS ATSLĒGAS.DARI.NOSLĒGT NĀKAMO KURŠU C UZ WA.JA SY-APUBRC <> 0.AIZVĒRT KURSU C.IZEJA.ENDIF.RAKSTĪT: / WA-BOOKID, WA-CUSTOMID, WA-CUSTTYPE,WA-SMOKER, WA-LUGGWEIGHT, WA-WUNIT,WA-RĒĶINS.ENDDO.

Ievadiet pasažieru sarakstu Lufthansa lidojumam 0400 28-02.1995:

Atveriet SQL atgriešanas kodus

Visi Open SQL priekšraksti aizpilda šādus divus sistēmas laukus ar atgriešanās kodiem.

SY-APUBRC

Pēc katra atvērtā SQL priekšraksta sistēmas laukā SY-SUBRC ir vērtība 0, ja operācija bija veiksmīga, vērtība, kas nav 0, ja nē.

SY-DBCNT

Pēc Open SQL priekšraksta sistēmas laukā SY-DBCNT ir apstrādāto datu bāzes rindu skaits.

Vietējā SQL

Kā jau minēts, vietējā SQL ļauj ABAP programmā izmantot datu bāzei specifiskus SQL priekšrakstus.

Lai izmantotu Native SQL priekšrakstu, jums jāpievieno priekšraksts EXEC SQL un jāseko ENDEXEC priekšrakstam.

Sintakse

EXEC SQL [PERFORMING 
].ENDEXEC.
Pēc Native SQL priekšrakstiem nav perioda. Turklāt, izmantojot apgrieztus komatus (") vai zvaigznīti (*) līnijas sākumā vietējā SQL priekšrakstā, komentārs netiek ievadīts tāpat kā parastajā ABAP sintaksē. Jums jāzina, vai tabulu un lauku nosaukumi ir reģistrēti jūsu izvēlētajā datu bāzē.

Vietējos SQL priekšrakstos dati tiek pārvietoti starp datu bāzes tabulu un ABAP programmu, izmantojot resursdatora mainīgos. Tie ir deklarēti ABAP programmā un Native SQL priekšrakstā pirms tiem ir kols (:). Kā resursdatora mainīgos varat izmantot elementāras struktūras. Izņēmuma kārtā INTO klauzulas struktūras tiek apstrādātas tā, it kā visi to lauki būtu uzskaitīti atsevišķi.

Tāpat kā Open SQL, arī pēc ENDEXEC priekšraksta SY-DBCNT satur apstrādāto rindu skaitu. Gandrīz visos gadījumos SY-SUBRC pēc ENDEXEC paziņojuma ir vērtība 0.

Atvērt SQL - veiktspējas noteikumi

Lai uzlabotu SQL un savukārt ABAP programmas veiktspēju, jārūpējas par šādiem noteikumiem:

Saglabājiet rezultātu kopu mazu

  • Izmantojot klauzulu kur
  • Ja no datu bāzes ir nepieciešams tikai viens ieraksts, pēc iespējas izmantojiet SELECT SINGLE.
Samaziniet pārsūtīto datu apjomu
  • Ierobežojiet rindu skaitu
  • Ja tabulā ir nepieciešami tikai daži lauki, izmantojiet priekšrakstu SELECT INTO…
  • Ierobežot kolonnu skaitu
  • Izmantojiet apkopošanas funkcijas
Samaziniet datu pārsūtīšanas skaitu
  • Izvairieties no ligzdotajām atlasītajām cilpām
  • Alternatīva iespēja ir izmantot priekšrakstu SELECT… VISIEM IERAKSTIEM. Šis apgalvojums bieži var būt daudz efektīvāks nekā veikt lielu skaitu SELECT vai SELECT SINGLE priekšrakstu iekšējās tabulas LOOP laikā.
  • Izmantojiet vārdnīcas skatus
  • Izmantojiet pievienojumus klauzulā FROM
  • Klauzulā izmantojiet apakšklausības
Samaziniet meklēšanas izmaksas
  • Klauzulā izmantojiet indeksa laukus
  • Piekļūstot datu bāzēm, vienmēr pārliecinieties, vai tiek izmantots pareizs indekss.
Samaziniet datu bāzes slodzi
  • Buferizācija
  • Loģiskās datu bāzes
  • Izvairieties no atkārtotas piekļuves datubāzei
Iekšējo tabulu izmantošana ierakstu buferizēšanai
  • Lai izvairītos no viena un tā paša SELECT izpildīšanas vairākas reizes (un tāpēc ir jāizvēlas dublikāti), veiktspējas uzlabošanai var izmantot HASHED tipa iekšējo tabulu.