Condividi tramite


CHIAMARE

Importante

Questa funzionalità è in Anteprima Pubblica.

Si applica a:spunta su sì Databricks SQL spunta su sì Databricks Runtime 17.0 e versioni successive

Richiama una procedura memorizzata in base al nome e passa argomenti da e verso la procedura.

Le chiamate di routine possono essere annidate fino a 64 livelli.

Sintassi

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

Parametri

  • procedure_name

    Nome della procedura da invocare. Il nome della routine può essere facoltativamente qualificato con un nome di schema. Se il nome non è qualificato, la procedura viene risolta nello schema corrente. Se la routine non esiste, viene generato un ROUTINE_NOT_FOUND errore.

  • discussione

    Per gli argomenti assegnati ai IN parametri, qualsiasi espressione di un tipo che può essere convertito al parametro o alla parola chiave DEFAULT. Per OUT i parametri e INOUT l'argomento deve essere una variabile di sessione o una variabile locale.

    Se la procedura ha esito negativo, i valori degli argomenti dei OUT parametri e INOUT rimangono invariati.

    Annotazioni

    L'argomento deve corrispondere al tipo di dati del parametro . Ciò include specificare, ad esempio, DATE'2015-01-01' anziché '2015-01-01' per un parametro DATE.

  • namedParameter

    Nome non qualificato di un parametro a cui è assegnato .argExpr

Il numero di argomenti non deve essere maggiore del numero di parametri specificati per la routine. Se si specifica un numero inferiore di argomenti rispetto ai parametri, i parametri devono essere definiti con DEFAULT valori.

Esempi

> 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