Bagikan melalui


Pembuatan skrip SQL

Berlaku untuk:bercentang ya Databricks SQL bercentang ya Databricks Runtime 16.3 ke atas

Penting

Fitur ini ada di Pratinjau Umum.

Anda dapat menggunakan logika prosedural yang kuat menggunakan sintaks skrip berbasis standar SQL/PSM. Setiap skrip SQL dimulai dengan blok pernyataan majemuk (BEGIN ... END). Pernyataan majemuk dimulai dengan bagian untuk mendeklarasikan variabel lokal, kondisi yang ditentukan pengguna, dan penangan kondisi, yang digunakan untuk menangkap pengecualian. Ini diikuti oleh isi pernyataan senyawa, yang terdiri dari:

  • Pernyataan kontrol alur mencakup perulangan atas ekspresi predikat, perulangan FOR atas hasil kueri, logika kondisional seperti IF dan CASE, dan cara untuk keluar dari perulangan seperti LEAVE dan ITERATE.
  • Pernyataan DDL seperti ALTER, CREATE, DROP.
  • Pernyataan DCL (Pengendalian Data) seperti GRANT dan REVOKE.
  • Pernyataan DML INSERT, UPDATE, DELETE, dan MERGE.
  • Kueri yang mengembalikan tataan hasil ke pemanggil skrip.
  • SET pernyataan untuk mengatur variabel lokal serta variabel sesi.
  • Pernyataan EXECUTE IMMEDIATE.
  • Pernyataan majemuk bertingkat, yang menyediakan cakupan bertingkat untuk variabel, kondisi, dan penangan kondisi.

Meneruskan data antara pemanggil dan pernyataan gabungan

Ada dua cara untuk meneruskan data ke dan dari skrip SQL:

  • Gunakan variabel sesi untuk meneruskan nilai skalar atau set kecil array atau peta dari satu skrip SQL ke skrip SQL lainnya.
  • Gunakan penanda parameter untuk meneruskan nilai skalar atau kumpulan kecil array atau data peta dari widget notebook, Python, atau bahasa lain ke Skrip SQL.

Cakupan variabel

Variabel yang dideklarasikan dalam pernyataan gabungan dapat direferensikan dalam ekspresi apa pun dalam pernyataan gabungan. Databricks menentukan pengidentifikasi dari cakupan paling dalam ke luar, mengikuti aturan yang dijelaskan dalam bagian Resolusi Nama . Anda dapat menggunakan pernyataan majemuk opsional label untuk menjelaskan nama variabel yang duplikat.

Penanganan kondisi

SQL Scripting mendukung penanganan kondisi, yang digunakan untuk memproses dan mencegat pengecualian terhadap EXIT dalam pemrosesan skrip SQL. Dalam penangan kondisi, Anda dapat MENANDA-ULANG pengecualian asli, MENANDAKAN pengecualian baru, atau keluar dari pernyataan majemuk tanpa pengecualian.

Penangan kondisi dapat didefinisikan untuk menangani tiga kelas kondisi yang berbeda:

  • Satu atau beberapa kondisi bernama yang dapat menjadi kelas kesalahan tertentu yang ditentukan Databricks seperti DIVIDE_BY_ZERO atau kondisi yang dideklarasikan pengguna. Handler ini menangani kondisi spesifik ini.

  • Satu atau beberapa SQLSTATE, yang dapat dimunculkan oleh Databricks atau pernyataan SIGNAL pengguna. Handler ini dapat menangani kondisi apa pun yang terkait dengan SQLSTATEtersebut.

  • Handler SQLEXCEPTION yang umum dapat menangkap semua kondisi yang jatuh ke dalam SQLEXCEPTION (SQLSTATE apa pun yang bukan XX*** dan bukan 02***).

Berikut ini digunakan untuk menentukan penanganan kondisi yang mana berlaku untuk pengecualian. Penangan kondisi ini disebut handler yang paling tepat:

  • Penangan kondisi tidak dapat berlaku untuk pernyataan apa pun yang ditentukan dalam isinya sendiri atau isi penangan kondisi apa pun yang dideklarasikan dalam pernyataan senyawa yang sama.

  • Penangan pengendali kondisi yang berlaku didefinisikan dalam pernyataan gabungan terdalam di mana pengecualian terjadi dan sesuai dengan kebutuhan.

  • Jika tersedia lebih dari satu handler yang sesuai, handler yang paling spesifik adalah yang paling tepat. Misalnya, handler pada kondisi bernama lebih spesifik daripada yang ada di SQLSTATEbernama . Handler EXCEPTION generik adalah yang paling tidak spesifik.

Kecuali jika handler SIGNALatau RESIGNALmemiliki kondisi sendiri, hasil dari penanganan kondisi adalah untuk menjalankan pernyataan yang mengikuti pernyataan gabungan yang menyatakan handler untuk dieksekusi selanjutnya.

Prosedur Tersimpan SQL

Penting

Fitur ini ada di Pratinjau Umum.

Berlaku untuk: ditandai ya Databricks SQL ditandai ya Databricks Runtime 17.0 ke atas

Menggunakan pernyataan CREATE PROCEDURE , Anda dapat mempertahankan Skrip SQL di Katalog Unity. Anda kemudian dapat memberikan akses ke prosedur kepada prinsipal lain. Prinsipal tersebut kemudian dapat menggunakan pernyataan CALL untuk memanggil prosedur.

Daftar Pernyataan Alur Kontrol

Berikut ini adalah daftar pernyataan alur kontrol yang didukung: