Aracılığıyla paylaş


ÇAĞIRMAK

Önemli

Bu özellik Genel Önizleme aşamasındadır.

Şunun için geçerlidir:evet olarak işaretlendi Databricks SQL evet olarak işaretlendi Databricks Runtime 17.0 ve üzeri

Saklı yordamı ada göre çağırır ve bağımsız değişkenleri yordama ve yordamdan geçirir.

Prosedür çağrıları en fazla 64 düzey iç içe olabilir.

Uyarı

CALL deyimi ODBC'de desteklenmez.

Sözdizimi

CALL procedure_name( [ argument [, …] ]
                     [ namedParameter => argument ] [, ...] )

Parametreler

  • procedure_name

    Çağrılacak yordamın adı. Prosedür adı isteğe bağlı olarak bir şema adı ile nitelenebilir. Eğer isim nitelikli değilse, prosedür geçerli şemada çözümlenir. Eğer prosedür mevcut değilse, bir ROUTINE_NOT_FOUND hatası ortaya çıkar.

  • tartışma

    Parametrelere atanan bağımsız değişkenler için, parametreye IN atanabilecek türdeki herhangi bir ifade veya DEFAULT anahtar sözcük. OUT ve INOUT parametreleri için bağımsız değişken bir oturum değişkeni veya yerel değişken olmalıdır.

    Yordam başarısız olursa, OUT ve INOUT parametrelerinin bağımsız değişken değerleri değişmeden kalır.

    Uyarı

    Bağımsız değişken, parametrenin veri türüyle eşleşmelidir. Bu, bir DATE'2015-01-01' parametresi için '2015-01-01' yerine, örneğin: DATE belirtmeyi içerir.

  • namedParameter

    atandığı argExpr parametrenin nitelenmemiş adı.

Bağımsız değişkenlerin sayısı, yordam için belirtilen parametre sayısından büyük olmamalı. Parametrelerden daha az bağımsız değişken belirtirseniz, parametrelerin DEFAULT değerleriyle tanımlanması gerekir.

Örnekler

> 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