SQL & SAP ABAP'ta yerel SQL

İçindekiler:

Anonim
Bu öğreticinin amacı size SQL veya veritabanı kavramlarını öğretmek değil, sizi ABAP'deki SQL çeşitliliğiyle tanıştırmaktır.

ABAP / 4 programlama dilinde, kullanılan iki tür SQL vardır.

  1. YEREL SQL
  2. SQL'i AÇIN.
Open SQL, R / 3 sisteminin kullandığı veritabanı platformundan bağımsız olarak ABAP sözlüğünde belirtilen veritabanı tablolarına erişmenizi sağlar.

Yerel SQL, bir ABAP / 4 programında veritabanına özgü SQL ifadelerini kullanmanıza izin verir. Bu, ABAP sözlüğü tarafından yönetilmeyen veritabanı tablolarını kullanabileceğiniz ve dolayısıyla R / 3 sisteminin parçası olmayan verileri entegre edebileceğiniz anlamına gelir.

Open SQL, R / 3 sistemindeki merkezi veritabanı üzerinde işlemleri gerçekleştiren bir dizi ABAP deyiminden oluşur. İşlemlerin sonuçları ve herhangi bir hata mesajı, kullanılan veritabanı sisteminden bağımsızdır. Böylece Open SQL, SAP tarafından desteklenen tüm veritabanı sistemleri için tek tip bir sözdizimi ve anlambilim sağlar. Yalnızca Open SQL deyimlerini kullanan ABAP programları, kullanılan veritabanı sisteminden bağımsız olarak herhangi bir R / 3 sisteminde çalışacaktır. Açık SQL ifadeleri yalnızca ABAP sözlüğünde oluşturulmuş veritabanı tablolarıyla çalışabilir.

Temel Açık SQL Komutları

  • SEÇ
  • EKLE
  • GÜNCELLEME
  • DEĞİŞTİR
  • SİL
  • OPEN CURSOR,? FETCH,? CLOSE CURSOR
Misal
TABLOLAR KİTABI.VERİ C TİPİ İMLEÇ,WA SBOOK GİBİ.CARRID = 'LH' NEREDE SBOOK'TAN SEÇİM * İÇİN CURSOR C'yi açınVE CONNID = '0400'VE FLDATE = '19950228'BİRİNCİL ANAHTAR İLE SİPARİŞ EDİN.YAPMAK.WA'YA BİR SONRAKİ İMLEÇ C'yi FETCH.EĞER SY-SUBRC <> 0.İMLEÇİ KAPAT C.ÇIKIŞ.ENDIF.YAZIN: / WA-BOOKID, WA-CUSTOMID, WA-CUSTTYPE,WA-SMOKER, WA-LUGGWEIGHT, WA-WUNIT,WA-FATURA.ENDDO.

28-02.1995 Lufthansa 0400 sefer sayılı uçuşu için yolcu listesinin çıktısını alın:

SQL Dönüş Kodlarını Açın

Tüm Open SQL deyimleri aşağıdaki iki sistem alanını dönüş kodlarıyla doldurur.

SY-SUBRC

Her Open SQL ifadesinden sonra, SY-SUBRC sistem alanı, işlem başarılıysa 0 değerini, değilse 0'dan farklı bir değeri içerir.

SY-DBCNT

Bir Open SQL ifadesinden sonra, SY-DBCNT sistem alanı işlenen veritabanı satırlarının sayısını içerir.

Yerel SQL

Daha önce belirtildiği gibi, Native SQL, bir ABAP programında veritabanına özgü SQL ifadelerini kullanmanıza izin verir.

Native SQL deyimini kullanmak için, EXEC SQL deyiminden önce gelmeli ve ENDEXEC deyimini takip etmelisiniz.

Sözdizimi

EXEC SQL [PERFORMING 
].ENDEXEC.
Yerel SQL ifadelerinden sonra nokta yoktur. Ayrıca, yerel bir SQL deyiminde bir satırın başında ters virgül (") veya yıldız işareti (*) kullanmak, normal ABAP sözdiziminde olduğu gibi bir yorum getirmez. Tablo ve alan adlarının büyük / küçük harf olup olmadığını bilmeniz gerekir. seçtiğiniz veritabanında hassas.

Yerel SQL deyimlerinde veriler, ana bilgisayar değişkenleri kullanılarak veritabanı tablosu ve ABAP programı arasında taşınır. Bunlar ABAP programında bildirilir ve Native SQL deyiminde iki nokta üst üste (:) ile başlar. Temel yapıları ana bilgisayar değişkenleri olarak kullanabilirsiniz. İstisnai olarak, bir INTO cümlesindeki yapılar, tüm alanları ayrı ayrı listelenmiş gibi ele alınır.

Open SQL'de olduğu gibi, ENDEXEC ifadesinden sonra SY-DBCNT, işlenen satırların sayısını içerir. Hemen hemen tüm durumlarda, SY-SUBRC, ENDEXEC ifadesinden sonra 0 değerini içerir.

Open SQL - Performans Kuralları

SQL'in ve buna karşılık ABAP programının performansını iyileştirmek için aşağıdaki kurallara dikkat edilmelidir:

Sonuç Kümesini Küçük Tutun

  • Where cümlesini kullanma
  • Veritabanından yalnızca bir kayıt gerekiyorsa, mümkün olduğunda TEKLİ SEÇ işlevini kullanın.
Aktarılan Veri Miktarını En Aza İndirin
  • Satır sayısını kısıtlayın
  • Bir tablodan yalnızca belirli alanlar gerekiyorsa, SELECT INTO… ifadesini kullanın
  • Sütun sayısını kısıtla
  • Toplama işlevlerini kullanın
Veri Transferi Sayısını En Aza İndirin
  • İç içe geçmiş seçim döngülerinden kaçının
  • Alternatif bir seçenek, SELECT… FOR ALL ENTRIES ifadesini kullanmaktır. Bu ifade, dahili bir tablonun bir DÖNGÜSÜ sırasında çok sayıda SELECT veya SELECT SINGLE komutu gerçekleştirmekten çok daha verimli olabilir.
  • Sözlük görünümlerini kullanın
  • FROM yan tümcesinde Joins kullanın
  • Where cümlesinde alt sorgular kullanın
Arama Ek Yükünü En Aza İndirin
  • Where cümlesindeki dizin alanlarını kullanın
  • Veritabanlarına erişirken, her zaman doğru dizinin kullanıldığından emin olun.
Veritabanı Yükünü Azaltın
  • Arabelleğe alma
  • Mantıksal veritabanları
  • Tekrarlanan veritabanı erişiminden kaçının
Kayıtları Arabelleğe Almak İçin Dahili Tabloları Kullanma
  • Aynı SELECT'i birden çok kez yürütmekten (ve dolayısıyla yinelenen seçimlerden) kaçınmak için, performansı artırmak için HASHED türünde bir dahili tablo kullanılabilir.