Buka SQL & SQL asli dalam SAP ABAP

Isi kandungan:

Anonim
Matlamat tutorial ini bukan untuk mengajar anda konsep SQL atau pangkalan data tetapi untuk memperkenalkan anda kepada kepelbagaian SQL dalam ABAP

Dalam bahasa pengaturcaraan ABAP / 4, terdapat dua jenis SQL yang digunakan.

  1. SQL SIFAT
  2. BUKA SQL.
Open SQL membolehkan anda mengakses jadual pangkalan data yang dinyatakan dalam kamus ABAP tanpa mengira platform pangkalan data yang digunakan sistem R / 3.

Native SQL membolehkan anda menggunakan pernyataan SQL khusus pangkalan data dalam program ABAP / 4. Ini bermaksud bahawa anda boleh menggunakan jadual pangkalan data yang tidak ditadbir oleh kamus ABAP, dan oleh itu mengintegrasikan data yang bukan merupakan sebahagian daripada sistem R / 3.

Open SQL terdiri daripada sekumpulan pernyataan ABAP yang melakukan operasi pada pangkalan data pusat dalam sistem R / 3. Hasil operasi dan sebarang mesej ralat tidak bergantung pada sistem pangkalan data yang digunakan. Open SQL dengan demikian menyediakan sintaks dan semantik yang seragam untuk semua sistem pangkalan data yang disokong oleh SAP. Program ABAP yang hanya menggunakan pernyataan Open SQL akan berfungsi dalam sistem R / 3 mana pun, tanpa mengira sistem pangkalan data yang digunakan. Pernyataan SQL terbuka hanya dapat berfungsi dengan jadual pangkalan data yang telah dibuat dalam kamus ABAP.

Perintah SQL Terbuka Asas

  • PILIH
  • MASUKKAN
  • KEMASKINI
  • MODIFIKASI
  • HAPUS
  • KURSOR TERBUKA,? FETCH,? CLOSE CURSOR
Contohnya
JADUAL SBOOK.KURSOR JENIS DATA C,INGIN SBOOK.KURSOR TERBUKA C UNTUK PILIH * DARI SBOOK DI MANA CARRID = 'LH'DAN SAMBUNGAN = '0400'DAN FLDATE = '19950228'PESANAN MENGIKUT KUNCI PERDANA.LAKUKAN.FETCH KURSOR BERIKUTNYA C KE WA.JIKA SY-SUBRC <> 0.PENUTUP C.KELUAR.ENDIF.MENULIS: / WA-BOOKID, WA-CUSTOMID, WA-CUSTTYPE,WA-SMOKER, WA-LUGGWEIGHT, WA-WUNIT,WA-INVOIS.ENDDO.

Keluarkan senarai penumpang untuk penerbangan Lufthansa 0400 pada 28-02.1995:

Buka Kod Pulangan SQL

Semua pernyataan Open SQL mengisi dua bidang sistem berikut dengan kod pengembalian.

SY-SUBRC

Setelah setiap pernyataan Open SQL, bidang sistem SY-SUBRC mengandungi nilai 0 jika operasi itu berjaya, nilai selain 0 jika tidak.

SY-DBCNT

Selepas pernyataan Open SQL, bidang sistem SY-DBCNT mengandungi bilangan baris pangkalan data yang diproses.

SQL asli

Seperti yang telah disebutkan, Native SQL membolehkan anda menggunakan pernyataan SQL khusus pangkalan data dalam program ABAP.

Untuk menggunakan pernyataan Native SQL, anda mesti mendahuluinya dengan pernyataan EXEC SQL, dan mengikutinya dengan pernyataan ENDEXEC.

Sintaks

EXEC SQL [PRESTASI 
].ENDEXEC.
Tidak ada tempoh selepas penyataan SQL Asli. Selanjutnya, menggunakan koma terbalik (") atau tanda bintang (*) pada awal baris dalam pernyataan SQL asli tidak memperkenalkan komen seperti yang berlaku dalam sintaks ABAP biasa. Anda perlu tahu sama ada nama jadual dan medan adalah huruf besar- peka dalam pangkalan data pilihan anda.

Dalam pernyataan Native SQL, data diangkut antara jadual pangkalan data dan program ABAP menggunakan pemboleh ubah host. Ini dinyatakan dalam program ABAP, dan didahului dalam pernyataan Native SQL oleh titik dua (:). Anda boleh menggunakan struktur asas sebagai pemboleh ubah host. Secara luar biasa, struktur dalam klausa INTO diperlakukan seolah-olah semua bidangnya disenaraikan secara individu.

Seperti dalam Open SQL, setelah pernyataan ENDEXEC, SY-DBCNT mengandungi bilangan baris yang diproses. Dalam hampir semua kes, SY-SUBRC mengandungi nilai 0 selepas pernyataan ENDEXEC.

Buka SQL - Peraturan Prestasi

Untuk meningkatkan prestasi SQL dan seterusnya program ABAP, seseorang harus menjaga peraturan berikut-

Pastikan Hasilnya Kecil

  • Menggunakan klausa mana
  • Sekiranya hanya diperlukan satu catatan dari pangkalan data, gunakan SELECT SINGLE bila mungkin.
Meminimumkan Jumlah Data yang Dipindahkan
  • Hadkan bilangan garis
  • Sekiranya hanya bidang tertentu yang diperlukan dari jadual, gunakan pernyataan SELECT INTO…
  • Hadkan bilangan lajur
  • Gunakan fungsi agregat
Minimumkan Bilangan Pemindahan Data
  • Elakkan gelung terpilih bersarang
  • Pilihan alternatif adalah menggunakan pernyataan SELECT… FOR ALL ENTRIES. Pernyataan ini selalunya jauh lebih berkesan daripada melakukan sebilangan besar pernyataan SELECT atau SELECT SINGLE semasa LOOP jadual dalaman.
  • Gunakan paparan kamus
  • Gunakan Joins dalam klausa FROM
  • Gunakan subkueri dalam klausa di mana
Kurangkan Overhead Carian
  • Gunakan medan indeks di mana klausa
  • Semasa mengakses pangkalan data, selalu pastikan bahawa indeks yang betul digunakan.
Kurangkan Beban Pangkalan Data
  • Penimbunan
  • Pangkalan data logik
  • Elakkan akses pangkalan data berulang
Menggunakan Jadual Dalaman untuk Menyekat Rekod
  • Untuk mengelakkan melaksanakan PILIHAN yang sama berkali-kali (dan oleh itu mempunyai pilihan pendua), jadual dalaman jenis HASHED dapat digunakan untuk meningkatkan prestasi.