Saklı Prosedür SAP HANA (SQL Eğitimi)

⚡ Akıllı Özet

SAP HANA SQL Saklı Prosedürü, belirli bir veri işlemini gerçekleştiren, yeniden kullanılabilir, adlandırılmış bir SQLScript bloğudur. IN, OUT ve INOUT parametrelerini kabul eder, READS SQL DATA ile salt okunur olarak işaretlenebilir ve CREATE PROCEDURE sözdizimi kullanılarak şema veya paket düzeyinde oluşturulur.

  • 🧱 Oluşturma yerini seçin: Prosedürleri, ait oldukları yere bağlı olarak şema (Katalog) veya paket (İçerik) düzeyinde tanımlayın. SAP HANA veri modeli.
  • 📥 Parametreleri bilinçli olarak kullanın: IN girdiyi geçirir, OUT çıktıyı döndürür, INOUT ise her ikisini de yapar — her imzada netlik için bunlara isim verin.
  • 🔐 SQL GÜVENLİĞİNİ dikkatlice seçin: DEFINER, oluşturucunun ayrıcalıklarıyla çalışır; INVOKER ise çağıranın ayrıcalıklarıyla çalışır; veri erişim politikasına göre seçim yapılır.
  • 📚 Mümkün olduğunda salt okunur olarak işaretleyin: SQL verilerini okuyarak amacı belgelendirir, planlamayı optimize eder ve prosedürün sonuç görünümü aracılığıyla sunulmasına olanak tanır.
  • 🤖 Prosedür taslakları hazırlamak için yapay zekayı kullanın: Yapay zekâ asistanları, sade İngilizce mantığı parametreler, istisna işleyiciler ve sonuç görünümleri içeren CREATE PROCEDURE şablonlarına dönüştürür.

SAP HANA SQL Saklı Prosedürü

SQL Saklı Prosedürü nedir?

A saklı yordam Prosedür, belirli bir görevi yerine getiren, adlandırılmış ve yeniden kullanılabilir bir kod birimidir. Prosedürler, daha büyük programlar halinde bir araya getirilebilir; bu da programlamanın temelini oluşturur. Modüler tasarımBir işlem başka bir işlemi çağırabilir; çağıran işleme "çağrı yapan" denir. arama programı.

Prosedürler, tanımlanmış bir veri dönüşümü dizisine sahip, yeniden kullanılabilir işlem bloklarıdır. Birden fazla giriş ve çıkış parametresi alabilirler ve salt okunur veya okuma-yazma olarak tanımlanabilirler.

An SQL prosedür SAP HANA Şu adreste oluşturulabilir:

  • Şema seviyesi (Katalog düğümü) — katalog üzerinden yönetilir ve gerekli yetkilere sahip her tüketici tarafından görülebilir.
  • Paket seviyesi (İçerik düğümü) — bir uygulama paketi içinde tasarım zamanı öğesi olarak yönetilir.

SAP HANA Saklı Prosedür Sözdizimi

Bir prosedür oluşturmak için genel sözdizimi şu şekildedir: SAP HANA aşağıda gösterilmiştir.

CREATE PROCEDURE <proc_name> [(<parameter_clause>)] [LANGUAGE <lang>]
    [SQL SECURITY <mode>] [DEFAULT SCHEMA <default_schema_name>]
    [READS SQL DATA [WITH RESULT VIEW <view_name>]] AS
    { BEGIN [SEQUENTIAL EXECUTION]
        <procedure_body>
      END
    | HEADER ONLY }

MKS CREATE PROCEDURE Bu ifade, belirtilen programlama dilini kullanarak bir prosedür oluşturur. <lang>Varsayılan dil SQLScript'tir.

Sözdizimi Öğeleri Açıklaması

Aşağıdaki tabloda CREATE PROCEDURE sözdiziminde kullanılan her bir madde açıklanmaktadır.

Eleman Açıklama
<proc_name> İşlemin adı.
<parameter_clause> Her biri IN, OUT veya INOUT olarak işaretlenmiş parametrelerin listesi:
• IN — prosedüre iletilen salt okunur girdi.
• OUT — İşlemden döndürülen çıktı.
• GİRİŞ — hem bir değer alır hem de değiştirilmiş değeri döndürür.
LANGUAGE <lang> İşlemde kullanılan programlama dili. Varsayılan: SQLSCRIPT.
SQL SECURITY <mode> Güvenlik modu (Varsayılan: TANIMLAYICI):
• TANIMLAYICI — İşlemi oluşturanın ayrıcalıklarıyla çalışır.
• İSTİHDAMCI — arayanın ayrıcalıklarıyla çalışır.
DEFAULT SCHEMA <default_schema_name> Prosedür gövdesindeki niteliksiz nesneleri çözümlemek için kullanılan şema. Atlanırsa, geçerli oturum şeması kullanılır.
READS SQL DATA Bu prosedürü salt okunur olarak işaretler. Veri veya şemayı değiştiremez, DDL veya DML içermez ve yalnızca diğer salt okunur prosedürleri çağırabilir.
WITH RESULT VIEW <view_name> Bu, prosedürün çıktısı olarak kullanılan sonuç görünümünü tanımlar. Bir sonuç görünümü mevcut olduğunda, prosedür başka bir prosedür tarafından sorgulanabilir. SQL İfadeyi sanki bir tablo veya görünümmüş gibi sunmak.
SEQUENTIAL EXECUTION İşlem gövdesinin paralellik olmaksızın ardışık olarak yürütülmesini zorlar.
<procedure_body> İşlemin ana gövdesi, seçilen programlama dilinde yazılmıştır.
HEADER ONLY Prosedürün gövdesini derlemeden, yalnızca OID'ye sahip özelliklerini oluşturur. İleriye dönük bildirimler için kullanışlıdır.

Örnek: Basit Bir Saklı Prosedür Oluşturma

Aşağıdaki örnek, belirli bir müşteri için toplam satışları döndüren salt okunur bir prosedür oluşturur.

CREATE PROCEDURE GET_CUSTOMER_SALES (
    IN  iv_customer_id NVARCHAR(10),
    OUT ev_total       DECIMAL(15,2)
)
LANGUAGE SQLSCRIPT
SQL SECURITY INVOKER
READS SQL DATA AS
BEGIN
    SELECT SUM(NET_VALUE) INTO ev_total
    FROM   "SALES"."ORDERS"
    WHERE  CUSTOMER_ID = :iv_customer_id;
END;

İşlemi şu şekilde çağırın:

CALL GET_CUSTOMER_SALES ('C0001', ?);

SAP HANA Studio (veya herhangi bir JDBC/ODBC istemcisi) şu değeri döndürür: ev_total Çıkış parametresinde.

Saklı bir prosedürü çağırmak

Oluşturulduktan sonra, saklı prosedür şu şekilde çağrılır: CALL Bu ifade, isteğe bağlı olarak başka bir prosedürün, bir SQLScript fonksiyonunun veya harici bir istemcinin içinde yer alabilir. En yaygın dört çağrı modeli şunlardır:

  • SQL'den: CALL my_proc(p1, p2, ?); — Yer tutucular ÇIKIŞ değerleri döndürür.
  • Başka bir prosedürden: CALL another_proc(:in1, :out1);
  • Bir başvurudan: Giriş parametrelerini bağlayın ve çıktıyı JDBC, ODBC veya Cloud SDK aracılığıyla okuyun.
  • Sanal bir masa olarak: Sonuç görünümü tanımlandığında, prosedürü görünüm adına karşı bir SELECT sorgusu ile sorgulayın.

HANA Saklı Prosedürleri için En İyi Uygulamalar

Aşağıdaki alışkanlıklar, HANA prosedürlerinin okunabilir, yüksek performanslı ve bakımı kolay olmasını sağlar:

  • Parametreleri öneklerle adlandırın: iv_ giriş için, ev_ ihracat için ve iov_ Giriş/çıkış için.
  • SQL VERİLERİNİ OKUMA ile niyeti işaretlemek İşlemin gerçekten salt okunur olduğu her yerde.
  • SQL SECURITY INVOKER kullanın. Arayanın ayrıcalıklarına saygı göstermesi gereken ortak prosedürler için.
  • Her bloğu BEGIN/END ile çevreleyin. Ve gövdeyi kısa tutun; karmaşık mantığı yardımcı prosedürlere bölün.
  • İstisnaları ele alın: kullanım DECLARE EXIT HANDLER Hataların düzgün bir şekilde raporlanması için.
  • SELECT * seçeneğinden kaçının. İç prosedürler — planların istikrarlı kalması için gerçekten ihtiyaç duyduğunuz sütunları adlandırın.

SSS

Bir prosedür birden fazla OUT parametresine sahip olabilir, DML işlemleri gerçekleştirebilir ve CALL ile çağrılır. Bir fonksiyon tek bir skalar veya tablo değeri döndürür, yan etkiler olmadan çalışır ve SELECT, WHERE veya diğer ifadelerin içinde kullanılır.

Varsayılan ve en yaygın dil SQLScript'tir. HANA ayrıca istatistiksel kütüphanelere ihtiyaç duyan prosedürler için R'yi ve düşük seviyeli betikleme için L'yi de destekler. SQLScript, neredeyse her iş prosedürü için doğru seçimdir.

DEFINER, prosedürü oluşturan kullanıcının ayrıcalıklarıyla çalıştırır; bu, prosedürün çağıranın doğrudan göremediği tablolara erişmesi gerektiğinde kullanışlıdır. INVOKER ise çağıranın ayrıcalıklarıyla çalıştırır; bu, paylaşılan yardımcı prosedürler için daha güvenlidir.

İşlem yalnızca veri okuyorsa ve asla yazmıyorsa, READS SQL DATA ifadesini kullanın. Bu, amacı belgelendirir, sonuç görünümlerine olanak tanır ve optimizasyoncunun işlemi daha agresif bir şekilde planlamasına izin verir.

CALL ifadesini kullanın: CALL proc_name (in_val, out_param);Bir uygulamadan, JDBC, ODBC veya Cloud SDK sürücüsü aracılığıyla giriş ve çıkışları bağlayın veya REST istemcileri için OData aracılığıyla prosedürü kullanıma sunun.

Bir işlemi bırakın DROP PROCEDURE proc_name; ve CREATE OR REPLACE PROCEDURE ile yeniden oluşturun. SAP HANA, ALTER PROCEDURE komutunu desteklemez; standart yöntem CREATE OR REPLACE'tir.

Yapay zekâ asistanları, CREATE PROCEDURE şablonları oluşturur, parametre adları önerir, istisna işleyicileri yazar ve sade İngilizce mantığı SQLScript'e çevirir. Ayrıca eksik şema niteliklerini ve salt okunur bağlamlardaki riskli DML işlemlerini de belirtirler.

Evet. Yapay zeka araçları SQLScript kodlarını satır satır açıklayarak her parametrenin ne işe yaradığını, belirli bir birleştirme işleminin neden seçildiğini ve prosedürün hatalı girdilerle nerede başarısız olabileceğini açıklıyor; bu da kod incelemesini ve entegrasyon sürecini çok daha hızlı hale getiriyor.

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