Bagikan melalui


DECLARE VARIABLE

Berlaku untuk:centang ditandai ya Databricks SQL centang ditandai ya Databricks Runtime 14.1 ke atas

Membuat variabel privat dan sementara sesi yang dapat Anda referensikan di mana pun ekspresi konstanta dapat digunakan. Anda juga dapat menggunakan variabel dalam kombinasi dengan klausa IDENTIFIER untuk membuat parameter pengidentifikasi dalam pernyataan SQL.

Variabel dimodifikasi menggunakan pernyataan SET VARIABLE.

Variabel sementara tidak dapat dirujuk dalam:

  • batasan pemeriksaan
  • kolom yang dihasilkan
  • ekspresi bawaan
  • isi UDF SQL yang bertahan
  • isi dari tampilan yang tersimpan

Variabel sementara juga disebut variabel sesi .

Sintaks

DECLARE [ OR REPLACE ] [ VARIABLE ] variable_name [, ...]
    [ data_type ] [ { DEFAULT | = } default_expression ]

Sebelum Databricks Runtime 17.2 Anda hanya dapat menentukan satu per satu variable_name .

Parameter

  • ATAU GANTI

    Jika ditentukan, variabel dengan nama yang sama diganti.

  • variable_name

    Nama untuk variabel. Nama mungkin memenuhi syarat dengan session atau system.session. Kecuali OR REPLACE ditentukan, nama variabel harus unik dalam sesi dan tidak boleh menduplikasi nama variabel lain dalam pernyataan.

  • data_type

    Jenis data apa pun yang didukung. Jika data_type dihilangkan, Anda harus menentukan DEFAULT, dan jenisnya berasal dari default_expression.

  • DEFAULT default_expression atau = default_expression

    Menentukan nilai awal variabel setelah pembuatan. default_expression harus bisa diubah ke data_type. Jika tidak ada default yang ditentukan, variabel diinisialisasi dengan NULL.

    Jika ekspresi menyertakan subkueri, Azure Databricks akan menghasilkan kesalahan INVALID_DEFAULT_VALUE.SUBQUERY_EXPRESSION.

Contoh

-- Create a variable with a default
> DECLARE VARIABLE myvar INT DEFAULT 5;
> VALUES (myvar);
 5

-- Setting a variable
> SET VAR myvar = (SELECT sum(c1) FROM VALUES(1), (2) AS T(c1);
> VALUES (myvar);
 3

-- Variables are the outermost scope.
> SELECT myvar, t.myvar, session.myvar FROM VALUES(1) AS T(myvar);
  1  1  3

> DROP TEMPORARY VARIABLE myvar;

-- A minimalist variable declaration
> DECLARE myvar = 5;
> VALUES (myvar);
 5

-- Declaring multiple variables
> DECLARE var1, var2 DOUBLE DEFAULT rand();
> VALUES (var1, var2);
 0.3745401188473625  0.3745401188473625

-- Using a variable with an IDENTIFIER clause
> DECLARE colname STRING;
> SET VAR colname = 'c1';
> SELECT IDENTIFIER(colname) FROM VALUES(1, 2) AS T(c1, c2);
  1

> SET VAR colname = 'c2';
> SELECT IDENTIFIER(colname) FROM VALUES(1, 2) AS T(c1, c2);
  2