Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Penting
Fitur ini ada di Pratinjau Publik.
Berlaku untuk:
Databricks SQL
Databricks Runtime 17.0 ke atas
Memanggil prosedur tersimpan berdasarkan nama dan meneruskan argumen ke dan dari prosedur.
Panggilan prosedur dapat disarangkan hingga 64 tingkat.
Sintaksis
CALL procedure_name( [ argument [, …] ]
[ namedParameter => argument ] [, ...] )
Parameter-parameternya
-
Nama prosedur yang akan dipanggil. Nama prosedur dapat dibubuhi secara opsional dengan nama skema. Jika nama tidak memenuhi syarat, prosedur diselesaikan dalam skema saat ini. Jika prosedur tidak ada, kesalahan
ROUTINE_NOT_FOUNDakan muncul. -
Untuk argumen yang ditetapkan ke
INparameter, ekspresi jenis apa pun yang dapat ditransmisikan ke parameter, atauDEFAULTkata kunci. UntukOUTparameter danINOUTargumen harus berupa variabel sesi, atau variabel lokal.Jika prosedur gagal, nilai argumen parameter
OUTdanINOUTtetap tidak berubah.Nota
Argumen harus cocok dengan jenis data parameter. Ini termasuk menentukan, misalnya:
DATE'2015-01-01', alih-alih'2015-01-01'sebagai parameterDATE. -
Nama tidak memenuhi syarat dari parameter yang
argExprditetapkan.
Jumlah argumen tidak boleh lebih besar dari jumlah parameter yang ditentukan untuk prosedur.
Jika Anda menentukan jumlah argumen lebih sedikit daripada jumlah parameter, parameter harus didefinisikan dengan nilai DEFAULT.
Contoh
> CREATE OR REPLACE PROCEDURE area_of_rectangle
(IN x INT, IN y INT, OUT area INT, INOUT acc INT)
LANGUAGE SQL
SQL SECURITY INVOKER
AS BEGIN
SET area = x * y;
SET acc = acc + area;
SELECT 'Area of rectangle is: ' || area;
END;
-- Session varables to handle OUT and INOUT parameters
> DECLARE area INT;
> DECLARE acc INT DEFAULT 10;
-- Invocation by position
> CALL area_of_rectangle(5, 10, area, acc);
Area of rectangle is: 50
> SELECT area, acc;
area acc
—--- —--
50 60
-- Invocation by name
> CALL area_of_rectangle(y => 10, x => 5, area => area, acc => acc);
Area of rectangle is: 50
> SELECT area, acc;
area acc
—--- —--
50 120