Bagikan melalui


CREATE PROCEDURE (membuat prosedur)

Penting

Fitur ini ada di Pratinjau Publik.

Berlaku untuk:ditandai dengan tanda centang (ya) Databricks SQL Databricks Runtime 17.0 ke atas ditandai dengan tanda centang (ya) Unity Catalog saja

Membuat prosedur di Unity Catalog yang mengambil atau memodifikasi argumen, menjalankan serangkaian pernyataan SQL, dan secara opsional mengembalikan kumpulan hasil.

Selain pemanggilan parameter posisi, Anda juga dapat memanggil prosedur menggunakan pemanggilan parameter bernama.

Sintaksis

CREATE [OR REPLACE] PROCEDURE [IF NOT EXISTS]
    procedure_name ( [ procedure_parameter [, ...] ] )
    [ characteristic [...] ]
    AS compound_statement

procedure_parameter
    [ IN | OUT | INOUT ] parameter_name data_type
    [ DEFAULT default_expression ] [ COMMENT parameter_comment ]

characteristic
  { LANGUAGE SQL |
    SQL SECURITY INVOKER |
    NOT DETERMINISTIC |
    COMMENT procedure_comment |
    DEFAULT COLLATION UTF8_BINARY |
    MODIFIES SQL DATA }

Parameter-parameternya

  • ATAU GANTIKAN

    Jika telah ditentukan, maka prosedur dengan nama yang sama akan digantikan. Anda tidak dapat mengganti fungsi yang ada dengan prosedur. Anda tidak dapat menentukan parameter ini dengan IF NOT EXISTS.

  • JIKA TIDAK ADA

    Jika ditentukan, buat prosedur hanya ketika prosedur dengan catatan tersebut belum ada. Jika ada prosedur dengan nama yang sama, pernyataan akan diabaikan. Anda tidak dapat menentukan parameter ini dengan OR REPLACE.

  • procedure_name

    Nama untuk prosedur. Anda dapat secara opsional memenuhi syarat nama prosedur dengan nama skema. Jika nama tidak memenuhi syarat, prosedur permanen dibuat dalam skema saat ini.

    Nama prosedur harus unik untuk semua rutinitas (prosedur dan fungsi) dalam skema.

  • procedure_parameter

    Menentukan parameter prosedur.

    • parameter_name

      Nama parameter harus unik dalam prosedur.

    • IN, INOUT, atau OUT

      Penjelasan opsional tentang mode parameter.

      • DI

        Menentukan parameter input saja. Ini adalah default.

      • INOUT

        Menentukan parameter yang menerima argumen input-output. Jika prosedur selesai tanpa kesalahan yang tidak tertangani, prosedur akan mengembalikan nilai parameter akhir sebagai output.

      • KELUAR

        ** Memastikan parameter output. Parameter diinisialisasi ke NULL dan, jika prosedur selesai tanpa kesalahan yang tidak tertangani, parameter akan mengembalikan nilai parameter akhir sebagai output.

    • data_type

      Jenis data apa pun yang didukung.

    • default_expression DEFAULT

      Opsional default yang akan digunakan ketika pemanggilan fungsi tidak menetapkan argumen ke parameter. default_expression harus dapat ditransmisikan ke data_type. Ekspresi tidak boleh mereferensikan parameter lain atau mengandung subkueri.

      Saat Anda menentukan default untuk satu parameter, semua parameter berikut juga harus memiliki default.

      DEFAULT tidak didukung untuk OUT parameter.

    • KOMENTAR komentar

      Deskripsi opsional parameter. comment harus berupa nilai literal STRING.

  • pernyataan_kompleks

    Pernyataan majemuk SQL (BEGIN ... END) dengan definisi Prosedur SQL.

    Ketika prosedur dibuat, kebenaran sintaksis divalidasi. Isi prosedur tidak divalidasi untuk kebenaran semantik sampai prosedur dipanggil.

  • karakteristik

    Karakteristik SQL SECURITY INVOKER dan LANGUAGE SQL diperlukan. Semua lainnya bersifat opsional. Anda dapat menentukan sejumlah karakteristik dalam urutan apa pun, tetapi Anda dapat menentukan setiap klausa hanya sekali.

    • BAHASA SQL

      Bahasa implementasi fungsi.

    • PEMANGGIL KEAMANAN SQL

      Menentukan bahwa setiap pernyataan SQL dalam isi prosedur akan dijalankan di bawah otoritas pengguna yang memanggil prosedur.

      Saat menyelesaikan hubungan dan rutinitas dalam isi prosedur, Azure Databricks menggunakan katalog saat ini dan skema saat ini pada saat pemanggilan.

    • TIDAK DETERMINISTIK

      Prosedur diasumsikan nondeterministik, yang berarti dapat mengembalikan hasil yang berbeda pada setiap pemanggilan, bahkan ketika dipanggil dengan argumen yang sama.

    • KOMENTAR PROSEDUR

      Komentar tentang prosedur. procedure_comment harus diartikan secara STRING harfiah. Defaultnya adalah NULL.

    • UTF8_BINARY KOLABASI DEFAULT

      Berlaku untuk:check ditandai ya pemeriksaan Databricks SQL ditandai ya Databricks Runtime 17.1 ke atas

      Memaksa pengurutan bawaan prosedur ke UTF8_BINARY. Klausa ini wajib jika skema di mana prosedur dibuat memiliki kolaborasi default selain UTF8_BINARY. Kolase default prosedur digunakan sebagai kolase default untuk parameter prosedur, dan kolase default untuk semua literal string dan variabel lokal dalam isi prosedur.

    • MEMODIFIKASI DATA SQL

      Prosedur diasumsikan untuk memodifikasi data SQL.

Contoh

-- Demonstrate INOUT and OUT parameter usage.
> CREATE OR REPLACE PROCEDURE add(x INT, y INT, OUT sum INT, INOUT total INT)
    LANGUAGE SQL
    SQL SECURITY INVOKER
    COMMENT 'Add two numbers'
    AS BEGIN
        SET sum = x + y;
        SET total = total + sum;
    END;
> DECLARE sum INT;
> DECLARE total INT DEFAULT 0;
> CALL add(1, 2, sum, total);
> SELECT sum, total;
 3 3
> CALL add(3, 4, sum, total);
 7 10

-- The last executed query is the result set of a procedure
> CREATE PROCEDURE greeting(IN mode STRING COMMENT 'informal or formal')
    LANGUAGE SQL
    SQL SECURITY INVOKER
    AS BEGIN
        SELECT 'Hello!';
        CASE mode WHEN 'informal' THEN SELECT 'Hi!';
                  WHEN 'formal' THEN SELECT 'Pleased to meet you.';
        END CASE;
    END;
> CALL greeting('informal');
  Hi!

> CALL greeting('formal');
  Pleased to meet you.

> CALL greeting('casual');
  Hello!