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.
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.
- 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.
- İ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.
- 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.
- 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.
- 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.
- 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.

