Aracılığıyla paylaş


SQL betik yazımı

Şunun için geçerlidir:evet olarak işaretlendi Databricks SQL evet olarak işaretlendi Databricks Runtime 16.3 ve üzeri

SQL/PSM standart tabanlı betik sözdizimini kullanarak güçlü yordamsal mantık kullanabilirsiniz. Herhangi bir SQL komut dosyası, bileşik deyimi bloğundan (BEGIN ... END) oluşur ve böyle başlar. Bileşik deyim, özel durumları yakalamak için kullanılan yerel değişkenleri, imleçleri, kullanıcı tanımlı koşulları ve koşul işleyicilerini bildirmek için bir bölümle başlar. Bunu aşağıdakilerden oluşan bileşik deyim gövdesi izler:

Çağıran ile bileşik deyim arasında veri geçirme

SQL betiğine veri geçirmenin iki yolu vardır:

  • Bir SQL betiğinden diğerine skaler değerler veya küçük dizi veya eşleme kümeleri geçirmek için oturum değişkenlerini kullanın.
  • Skaler değerleri veya küçük dizi kümelerini geçirmek veya verileri not defteri pencere öğesinden, Python'dan veya başka bir dilden SQL Betiği'ne eşlemek için parametre işaretçilerini kullanın.

Değişken ve imleç kapsamı

Bileşik deyim içinde bildirilen değişkenlere bileşik deyim içindeki herhangi bir ifadede başvurulabilir. Databricks, Ad Çözümlemesi'nde açıklanan kuralları izleyerek en iç kapsamdan dışa doğru tanımlayıcıları çözümler. Yinelenen değişken adlarınıayırt etmek için isteğe bağlı bileşik deyim etiketlerini kullanabilirsiniz.

Bileşik deyim içinde bildirilen imleçlere , OPENve FETCH deyimlerinde CLOSEbu bileşik deyim içinde başvurulabilir. Değişkenler gibi, iç içe yerleştirilmiş kapsamlarda yinelenen imleç adlarının belirsiz olmasını sağlamak için isteğe bağlı bileşik deyim etiketlerini kullanabilirsiniz.

Koşul işleme

SQL Betiği, bileşik deyim veya EXIT yürütme (Databricks Runtime 18.1 ve üzeri) için özel durumları kesmek ve işlemek için CONTINUE kullanılan koşul işleyicilerini destekler. Koşul işleyicisi içinde, özgün özel durumu yeniden sinyallayabilir, SIGNAL yeni bir özel durum oluşturabilir veya özel durum olmadan bileşik deyiminden çıkabilirsiniz.

Koşul işleyicileri, üç ayrı koşul sınıfını işlemek için tanımlanabilir:

  • DIVIDE_BY_ZERO veya kullanıcı tarafından bildirilen bir koşul gibi belirli bir Databricks tanımlı hata sınıfı olabilecek bir veya daha fazla adlandırılmış koşul. Bu işleyiciler bu özel koşulları ele alır.

  • Databricks veya kullanıcı SQLSTATE deyimi tarafından yükseltilebilen bir veya daha fazla SIGNAL. Bu işleyiciler, bu SQLSTATEile ilişkili tüm koşulları işleyebilir.

  • Genel bir SQLEXCEPTION işleyicisi, (SQLEXCEPTION olmayan ve SQLSTATEolmayan herhangi bir XX***) olan 02***'e düşen tüm koşulları yakalayabilir.

  • İşleyiciNOT FOUND, bir imleç sonuç kümesinin (Databricks Runtime 18.1 ve üzeri) sonuna getirildiğinde ortaya çıkan '02xxx' koşulunu içeren SQLSTATE sınıfıyla tüm koşulları yakalar.

Aşağıdakiler, bir özel duruma hangi koşul işleyicisinin uygulanacağına karar vermek için kullanılır. Bu koşul işleyicisi en uygunişleyici olarak adlandırılır:

  • Bir koşul işleyicisi, kendi gövdesinde tanımlanan herhangi bir deyime veya aynı bileşik deyimde bildirilen herhangi bir koşul işleyicisinin gövdesine uygulanamaz.

  • Özel durumun oluşturulduğu en içteki bileşik deyimde tanımlanan geçerli koşul işleyicileri uygundur.

  • Birden fazla uygun işleyici varsa, en özel işleyici en uygun işleyicidir. Örneğin, adlandırılmış bir koşul üzerindeki işleyici, adlandırılmış bir SQLSTATEüzerindekine göre daha özeldir. Genel EXCEPTION işleyicisi en az özeldir.

Koşul işleyicisinin sonucu aşağıdaki gibidir:

  • İşleyici EXIT deyimini yürütür, ardından işleyiciyi bildiren bileşik deyiminden çıkar. Bu bileşik deyim ve iç içe bileşik deyimler içinde açılan tüm imleçler örtük olarak kapatılır.
  • İşleyici CONTINUE deyimini yürütür, ardından koşulu oluşturan deyimini izleyerek yürütmeye devam eder.
  • Bir işleyici kendi SIGNALveya RESIGNALkoşulunu karşılamadığı sürece, bir koşul işleyicisinin sonucu, işleyiciyi belirten bileşik deyimden sonra gelen deyimi yürütmektir.

SQL Depolanan Prosedürler

Şunlar için geçerlidir: evet olarak işaretlendi Databricks SQL evet olarak işaretlendi Databricks Runtime 17.0 ve üzeri

CREATE PROCEDURE deyimini kullanarak Unity Kataloğu'nda bir SQL Betiğini kalıcı hale ekleyebilirsiniz. Daha sonra GRANT prosedüre diğer yetkililere erişim verebilirsiniz. Bu yöneticiler daha sonra yordamı çağırmak için CALL deyimini kullanabilirler.

Kontrol Akışı İfadelerinin Listesi

Desteklenen denetim akışı deyiminin listesi aşağıdadır:

İmleç Deyimleri Listesi

Aşağıdaki imleç deyimleri Databricks Runtime 18.1 ve üzerinde desteklenir. İmleçler bileşik deyiminde bildirilir.