SAP HANA SQL Komut Dosyası Eğitimi: Söz Dizimi ve Örnekler

⚡ Akıllı Özet

SQL betiğinde SAP HANA, standart SQL'i fonksiyonel ve prosedürel yapılarla genişletir. Saklı prosedürleri ve kullanıcı tanımlı fonksiyonları destekleyerek, veri yoğun mantığı uygulama sunucusundan veritabanına taşır.

  • 🧩 Temel Tanım: SQL sorgularının yerine saklı prosedürler içinde kullanılan SQL eklentileri koleksiyonu.
  • ???? İki Konteyner: Prosedürler bir dönüşüm dizisini tanımlar; kullanıcı tanımlı fonksiyonlar ise skalar ve tablo biçiminde gelir.
  • ???? Bildirimsel Mantık: Veritabanı tablolarına referans vermeden tablo türlerini tanımlar ve sıradan SELECT sorguları çalıştırır.
  • 🎼 Orkestrasyon Mantığı: DDL, DML ve sorgu ifadelerinin yanı sıra döngüler ve koşullu ifadeler kullanarak veri akışını uygular.
  • 🔀 Emirsel Mantık: IF, ELSEIF, ELSE, CASE, FOR döngüleri ve istisna işleme, mantığı veri akışları arasında bölüştürür.
  • 📤 Çoklu Çıkışlar: Bir SQL betiği prosedürü, düz bir SQL prosedürünün aksine, OUTPUT parametreleri aracılığıyla birden fazla sonuç döndürür.
  • Paralel Yürütme: Bağımsız ifadeler, hesaplama motoru tarafından paralel olarak yürütülür.

SQL betiğinde SAP HANA

SQL Komut Dosyası nedir?

SQL Script, SQL'e yönelik bir uzantı koleksiyonudur. Düz SQL yerine saklı yordamda kullanılabilir. İşlevsel ve prosedürel uzantıları belirler.

In SQL Komut dosyası kullanıcısı, öncelikle saklı yordamın oluşturulmasında kullanılan yapı ve tablolar için yerel değişkenleri tanımlayabilir.

SQL betiği Hesaplama görünümünde de kullanılabilir. SQL Script'te iki farklı mantık kapsayıcısı vardır.

  • Prosedür (Prosedürler, giriş ve veritabanı tabloları olarak iletilen veriler üzerindeki bir veri dönüşümleri dizisini tanımlamanıza olanak tanır).
  • Kullanıcı Tanımlı Fonksiyon (Kullanıcı Tanımlı Fonksiyon kabı, Skaler Kullanıcı Tanımlı Fonksiyon ve Tablo Kullanıcı Tanımlı Fonksiyon olarak ayrılmıştır).

SQL Komut Dosyası Dili öğeleri aşağıdaki gibidir –

Bildirime Dayalı SQL Komut Dosyası Mantığı (İşlevsel Uzantı)

  • Veritabanı tablolarına başvurmadan tablo türlerinin tanımlanmasına olanak tanır.
  • SELECT'ler gibi Tipik İfade.
  • Hesaplama Motoru (CE) İşlevleri.

⚠️ Sürüm notu: Hesaplama Motoru plan operatörleri, CE_COLUMN_TABLE ve CE_JOIN gibi CE_ fonksiyonları, aşağıdakiler tarafından kullanımdan kaldırılmıştır: SAPYeni geliştirmelerde, optimizasyon aracının en az onun kadar iyi işlediği standart SQL ifadeleri kullanılmalıdır. Mevcut CE kodu çalışmaya devam eder, ancak bir prosedürde bir sonraki değişiklik yapıldığında taşınmalıdır.

Düzenleme SQL Komut Dosyası Mantığı (İşlevsel Uzantı)

Düzenleme mantığı, DDL, DML ve SQL Sorgu İfadelerini kullanarak veri akışını uygulamak ve döngüler ve koşullar gibi zorunlu dil yapılarını kullanarak akış mantığını kontrol etmek için kullanılır.

  • Veri Tanımlama Dili Bildirimi. Örneğin Şema Oluştur.
  • Veri İşleme Dili (Örn. Ekle).

Zorunlu SQL Komut Dosyası Mantığı (Prosedürel Uzantı)

Zorunlu mantık, mantığı birkaç veri akışı arasında böler. Örneğin IF, ELSEIF, ELSE, CASE, FOR (Döngü) ve İstisnalar.

SQL Komut Dosyasının Önemi

Yalnızca SQL Script, veri yoğun mantığı veya uygulama sunucusunun çalışmasını veritabanı sunucusuna geçirmek için gerekli öğeleri sağlar.

SQL Script'in önemli noktaları

  • SQL Komut Dosyası, HANA veritabanındaki hesaplama motorunda yürütülür ve işlenir.
  • SQL Script karmaşık hesaplamaları gerçekleştirebilmektedir.
  • SQL Script'te, ara sonucu tutacak yerel bir değişken bildirilebilir.
  • SQL Komut Dosyası Prosedürü “ÇIKIŞ Parametresi” kullanılarak daha fazla sonuç döndürebilirken Normal SQL Prosedürü yalnızca bir sonuç döndürebilir.
  • SQL Script'te parametre olarak kullanılabilecek global veya yerel tablo türlerini tanımlayabilirsiniz.

SQL Script kullanılarak paralel işlem moduna ulaşılabilir.

SQL Komut Dosyası Prosedürü Örneği

En yaygın kullanılan kapsayıcı türü prosedürlerdir. Aşağıdaki örnekte, çalışan verileri okunur, filtrelenir ve sonuç bir çıktı tablosu parametresi aracılığıyla döndürülür.

CREATE PROCEDURE DHK_SCHEMA.GET_HIGH_EARNERS (
  IN  im_min_salary DECIMAL(15,2),
  OUT ex_employees  TABLE (EMP_NAME NVARCHAR(100), SALARY DECIMAL(15,2)),
  OUT ex_row_count  INTEGER
)
LANGUAGE SQLSCRIPT
READS SQL DATA
AS
BEGIN
  -- Declarative logic: a table variable, not a physical table
  lt_all = SELECT EMP_NAME, SALARY
             FROM DHK_SCHEMA.EMPLOYEE
            WHERE SALARY >= :im_min_salary;

  -- Imperative logic: branch on the result
  SELECT COUNT(*) INTO ex_row_count FROM :lt_all;

  IF :ex_row_count = 0 THEN
    ex_employees = SELECT '' AS EMP_NAME, 0 AS SALARY FROM DUMMY WHERE 1 = 0;
  ELSE
    ex_employees = SELECT * FROM :lt_all ORDER BY SALARY DESC;
  END IF;
END;

Üç kurala dikkat etmekte fayda var. Bir değişkenin herhangi bir okunuşunun başına iki nokta üst üste işareti konulur, bu nedenle :lt_all tablo değişkenini okurken lt_all Soldaki kısım ona atama yapar. READS SQL DATA, optimizasyoncuya prosedürün yan etkilerinin olmadığını söyler, bu da daha agresif paralelleştirmeye olanak tanır. Ve birden fazla çıktı parametresi döndüren bir prosedür, düz SQL'in tam olarak sahip olmadığı bir yetenektir.

Bunu söylemek oldukça kolay:

CALL DHK_SCHEMA.GET_HIGH_EARNERS (50000, ?, ?);

Skalar ve Tablo Kullanıcı Tanımlı Fonksiyonlar

Bir prosedür eylemler gerçekleştirirken, bir fonksiyon bir değer döndürür ve bir sorgu içinde kullanılabilir. SQL Script iki biçim sunar ve bunlar birbirinin yerine kullanılamaz.

Parametre Skalar UDF Tablo UDF
Geri dönüşler Tek bir değer Bir sonuç kümesi
Kullanılan SELECT listesi, WHERE koşulu, ifadeler FROM yan tümcesi, bir tablo gibi
Verileri değiştirebilir. Yok hayır Yok hayır
Tipik kullanım Vergi oranı gibi tekrar kullanılabilir hesaplamalar Parametreli görünüm, filtrelenmiş satırları döndürüyor.
-- Scalar function: returns one value
CREATE FUNCTION DHK_SCHEMA.ADD_BONUS (im_salary DECIMAL(15,2))
  RETURNS total DECIMAL(15,2)
  LANGUAGE SQLSCRIPT AS
BEGIN
  total := :im_salary * 1.10;
END;

SELECT EMP_NAME, DHK_SCHEMA.ADD_BONUS(SALARY) AS WITH_BONUS
  FROM DHK_SCHEMA.EMPLOYEE;

Bir tablo fonksiyonu RETURNS TABLE ile tanımlanır ve ardından FROM yan tümcesinde sorgulanır; bu da onu yeniden kullanılabilir, parametrelendirilmiş bir veri kümesi oluşturmanın doğal yolu haline getirir. hesaplama görünümü veya rapor tüketilebilir.

SQL Komut Dosyası En İyi Uygulamaları

SQL betikleri, motorun paralel çalışmasına izin verecek şekilde yazıldığında iyi performans gösterirken, uygulama kodu gibi yazıldığında kötü performans gösterir. Altı alışkanlık fark yaratır.

  1. Emir kipi yerine bildirme kipini tercih edin. Tek bir küme tabanlı ifade, satırları tek tek işleyen bir döngüye kıyasla genellikle kat kat daha iyi performans gösterir. FOR döngüsünü yalnızca mantık gerçekten bir küme işlemi olarak ifade edilemediğinde kullanın.
  2. İmleçlerden kaçının. Satır satır işlemeyi zorluyorlar ve hesaplama motorunu tamamen devre dışı bırakıyorlar. Neredeyse her imleç bir birleştirme veya toplama işlemi olarak yeniden yazılabilir.
  3. Açıklamaları birbirinden bağımsız tutun. Birbirine referans vermeyen iki tablo değişkeni paralel olarak hesaplanır. Her adımın bir önceki adım üzerinden zincirlenmesi, tüm prosedürü seri hale getirir.
  4. READS SQL DATA ifadesini true olduğu durumlarda geçerli olacak şekilde tanımlayın. Bu, işlemin herhangi bir yan etkisinin olmadığını gösterir ve bu da daha fazla optimizasyona olanak tanır.
  5. Filtreleme işlemini mümkün olan en erken aşamada gerçekleştirin. İlk tablo değişkenindeki satır sayısını azaltmak, sonraki tüm işlemleri de küçültür; oysa sondaki filtreleme zaten maliyeti karşılamış olur.
  6. CE_ fonksiyonlarından uzaklaşın. Bunlar kullanımdan kaldırılmıştır, tek bir ifadede SQL ile serbestçe karıştırılamazlar ve SQL optimizasyon aracı artık aynı işi daha iyi hallediyor.

İfade düzeyindeki sözdizimi şu bölümde ele alınmıştır: SAP HANA SQL'iBir prosedürün içinde kullanılabilen işlevler SAP HANA SQL fonksiyonlarıve bu prosedürleri kullanan modelleme nesneleri SAP HANA modellemesi öğretici.

SSS

İki nokta üst üste, değişkenin okunduğunu gösterir. Sol tarafa iki nokta üst üste koymadan yazmak ise değişkene değer atamayı ifade eder; dolayısıyla bu iki biçim, ayrıştırıcının atamayı referanstan ayırt etmesini sağlar.

Hayır. Hesaplama Motoru plan operatörleri kullanımdan kaldırılmıştır. Mevcut kod çalışmaya devam eder, ancak yeni geliştirmelerde artık en az onun kadar iyi işleyen standart SQL kullanılmalıdır.

Genellikle evet. Birçok FOR döngüsü ve imleç, uzun yoldan yazılmış bir birleştirme veya toplama işlemini ifade eder ve yapay zeka, küme tabanlı eşdeğerini önerebilir. Kabul etmeden önce satır sayılarının eşleştiğini doğrulayın.

Evet. Planı okumak.Viz trace, yapay zeka, zaman tüketen ifadeyi ve tablo değişkenleri arasındaki gereksiz bir bağımlılık nedeniyle adımların sıralanıp sıralanmadığını belirler.

Evet, birden fazla ÇIKTI tablosu parametresi aracılığıyla. Bu, yalnızca tek bir sonuç döndürebilen düz bir SQL prosedürüne kıyasla SQL Script'in başlıca avantajlarından biridir.

Bu yazıyı şu şekilde özetleyin: