Aracılığıyla paylaş


EXECUTE IMMEDIATE

Şunlar için geçerlidir:onay işareti evet olarak işaretlenmiş Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime 14.3 ve üzeri

olarak STRINGsağlanan bir SQL deyimi yürütür. Bu deyim, bağımsız değişkenleri isteğe bağlı olarak parametre işaretçilerine geçirir ve sonuçları değişkenlere atar.

Sözdizimi

EXECUTE IMMEDIATE sql_string
        [ INTO var_name [, ...] ]
        [ USING { arg_expr [ AS ] [alias] } [, ...] ]

Diğer SQL diyalektleriyle uyumluluk için, EXECUTE IMMEDIATE ayrıca USING ( { arg_expr [ AS ] [alias] } [, ...] ) destekliyor.

Parametreler

  • sql_string

    STRING İyi biçimlendirilmiş bir SQL deyimi oluşturan sabit bir ifade.

    sql_string parametre işaretçileri içeriyorsa, bunların tümü konumsal (?) veya tümü adlandırılmış (:parm1) olmalıdır.

    Databricks Runtime 17.3'ten önce sql_string bir sabit veya bir değişken olmalıdır. İfadeleri EXECUTE IMMEDIATE iç içe yerleştiremezsiniz.

  • INTO ( var_name [, ...] )

    İsteğe bağlı olarak tek satırlı sorgunun sonuçlarını SQL değişkenlerine döndürür. Sorgu satır döndürmezse sonuç olur NULL.

    Deyimi bir sorgu değilse, Azure Databricks hata oluşturur INVALID_STATEMENT_FOR_EXECUTE_INTO .

    Sorgu birden fazla satır döndürürse Azure Databricks ROW_SUBQUERY_TOO_MANY_ROWS hata verir.

    • var_name

      BIR SQL değişkeni. Bir değişkene birden çok kez başvurulamayabilir.

  • USING { arg_expr [ AS ] [alias] } [, ...]

    İsteğe bağlı olarak, sql_string parametre işaretçileri içeriyorsa, değeri parametrelere iliştirir.

    • arg_expr

      Parametre işaretçisine bağlanan sabit ifade. Parametre işaretçileri adlandırılmamışsa bağlama konuma göre yapılır. Adlandırılmış parametre işaretçileri için bağlama, isme göre yapılır.

    Databricks Runtime 17.3'ten önce bir sabit veya arg_expr olması gerekir.

    • alias

      arg_expr'u adlandırılmış parametre işaretçisine bağlamak için kullanılan adı geçersiz kılar. Adlandırılmış her parametre işaretçisi bir kez eşleştirilmelidir. Tüm arg_expr öğelerinin eşleşmesi gerekli değildir.

Örnekler

-- A self-contained execution using a literal string
> EXECUTE IMMEDIATE 'SELECT SUM(c1) FROM VALUES(?), (?) AS t(c1)' USING 5, 6;
  11

-- A SQL string composed in a SQL variable
> DECLARE sqlStr = 'SELECT SUM(c1) FROM VALUES(?), (?) AS t(c1)';
> DECLARE arg1 = 5;
> DECLARE arg2 = 6;
> EXECUTE IMMEDIATE sqlStr USING arg1, arg2;
  11

-- Using the INTO clause
> DECLARE sum INT;
> DECLARE sqlStr = 'SELECT SUM(c1) FROM VALUES(:first), (:second) AS t(c1)';
> EXECUTE IMMEDIATE sqlStr INTO sum USING arg1, arg2;
> SELECT sum;
  11

-- Using named parameter markers
> DECLARE sum INT;
> DECLARE sqlStr = 'SELECT SUM(c1) FROM VALUES(:first), (:second) AS t(c1)';
> EXECUTE IMMEDIATE sqlStr INTO sum USING (5 AS first, arg2 AS second);
> SELECT sum;
  11

-- Using constant expressions
> DECLARE func STRING DEFAULT 'sum';
> EXECUTE IMMEDIATE 'SELECT ' || func || '(c1) FROM VALUES(:first), (:second) AS t(c1)'
  USING 5 + 7 AS first, length('hello') AS second;
 19