Aracılığıyla paylaş


BEGIN END bileşik deyimi

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

Önemli

Bu özellik Genel Önizleme aşamasındadır.

SQL deyimleri dizisi, akış denetimi deyimleri, yerel değişken bildirimleri ve özel durum işleyicileri içerebilen bir SQL Betiği bloğu uygular.

Not

Bir not defterinden bileşik deyim çağrılırken hücredeki tek deyim olmalıdır.

Sözdizimi

[ label : ]
      BEGIN
      [ { declare_variable | declare_condition } ; [...] ]
      [ declare_handler ; [...] ]
      [ SQL_statement ; [...] ]
      END [ label ]

declare_variable
  DECLARE variable_name datatype [ DEFAULT default_expr ]

declare_condition
  DECLARE condition_name CONDITION [ FOR SQLSTATE [ VALUE ] sqlstate ]

declare_handler
  DECLARE handler_type HANDLER FOR condition_values handler_action

handler_type
  EXIT

condition_values
 { { SQLSTATE [ VALUE ] sqlstate | condition_name } [, ...] |
   { SQLEXCEPTION | NOT FOUND } [, ...] }

Parametre

  • etiket

    İsteğe bağlı bir tanımlayıcı, bileşik içinde tanımlanan değişkenleri niteleyip bileşikte bırakmak için kullanılır. Her iki etiket oluşumu da uyumlu olmalıdır ve END etiketi yalnızca label: etiketi belirtildiğinde belirtilebilir.

    label üst düzey bir bileşik deyim için belirtilmemelidir.

  • NOT ATOMIC

    Bileşik içindeki bir SQL deyimi başarısız olursa önceki SQL deyimlerinin geri alınmayacaklarını belirtir. Bu, varsayılan ve tek davranıştır.

  • declare_variable

    Bir veya daha fazla değişken için yerel değişken bildirimi

    • variable_name

      Değişkenin adı. Ad, sıfatlarla nitelendirilmemeli ve bileşik deyim içinde benzersiz olmalıdır.

    • data_type

      Desteklenen herhangi bir veri türü. data_type atlanırsa, DEFAULT belirtmeniz gerekir ve tür değeri default_expression'dan alınır.

    • { DEFAULT | = } default_expression

      Bildiriminden sonra değişkenin ilk değerini tanımlar. default_expression, data_type'a dönüştürülebilir olmalıdır. Varsayılan belirtilmezse, değişken NULL ile başlatılır.

  • Declare_condition

    Yerel koşul bildirimi

    • condition_name

      Koşulun nitelenmemiş adı bileşik deyimi kapsamındadır.

    • sqlstate

      A-Z ve 0-9 içeren, büyük/küçük harfe duyarsız 5 alfasayısal karakterden oluşan bir STRING sabit değeridir. SQLSTATE '00', '01' veya 'XX' ile başlamamalıdır. '02' ile başlayan tüm SQLSTATE'ler de önceden tanımlanmış NOT FOUND özel durumu tarafından yakalanacaktır. Belirtilmezse, SQLSTATE '45000' olur.

  • declare_handler

    Hata işleyicisi bildirimi.

    • handler_type

      • EXIT

        Koşul işlendikten sonra bileşik deyiminden çıkmak için işleyiciyi sınıflandırır.

    • condition_values

      İşleyicinin hangi SQL durumlarına veya koşullara uygulanacağını belirtir. Koşul değerleri bileşik deyimindeki tüm işleyiciler içinde benzersiz olmalıdır. Belirli koşul değerleri SQLEXCEPTION'dan daha önceliklidir.

    • sqlstate

      STRING ve 'A'-'Z' (büyük/küçük harfe duyarsız) olan 5 karakterlik '0'-'9' ifadesi.

    • condition_name

      Bu bileşik içinde tanımlanan bir koşul, dış bileşik deyim veya sistem tanımlı bir hata sınıfı.

    • SQLEXCEPTION

      Kullanıcıya yönelik herhangi bir hata koşulu için geçerlidir.

    • NOT FOUND

      SQLSTATE '02' sınıfına sahip herhangi bir hata koşulu için geçerlidir.

    • handler_action

      Koşul değerlerinden herhangi biri gerçekleştiğinde yürütülecek bir SQL deyimi. Birden çok deyim eklemek için iç içe yerleştirilmiş bileşik deyimi kullanın.

  • SQL_statement

    DDL, DML, denetim deyimi veya bileşik deyim gibi bir SQL deyimi. Herhangi bir SELECT veya VALUES deyimi, çağıranın kullanabileceği bir sonuç kümesi oluşturur.

Örnekler

-- A compound statement with local variables, and exit hanlder and a nested compound.
> BEGIN
    DECLARE a INT DEFAULT 1;
    DECLARE b INT DEFAULT 5;
    DECLARE EXIT HANDLER FOR DIVIDE_BY_ZERO
      div0: BEGIN
        VALUES (15);
      END div0;
    SET a = 10;
    SET a = b / 0;
    VALUES (a);
END;
15