KALLA

Viktigt!

Den här funktionen finns som allmänt tillgänglig förhandsversion.

Gäller för:check markerad ja Databricks SQL-kontroll markerad ja Databricks Runtime 17.0 och senare

Anropar en lagrad procedur med namn och skickar argument till och från proceduren.

Proceduranrop kan kapslas upp till 64 nivåer.

Syntax

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

Parameterar

  • procedure_name

    Namnet på den procedur som ska anropas. Procedurnamnet kan vara valfritt kvalificerat med ett schemanamn. Om namnet inte är kvalificerat löses proceduren i det aktuella schemat. Om proceduren inte finns utlöses ett ROUTINE_NOT_FOUND fel.

  • argument

    För argument som tilldelats parametrar IN , valfritt uttryck av en typ som kan överföras till parametern eller nyckelordet DEFAULT . För OUT och INOUT parametrar måste argumentet vara en sessionsvariabel eller lokal variabel.

    Om proceduren misslyckas förblir argumentvärdena för parametrarna OUT och INOUT oförändrade.

    Anmärkning

    Argumentet måste matcha parameterns datatyp. Detta inkluderar att ange, till exempel: DATE'2015-01-01', i stället '2015-01-01' för för en DATE parameter.

  • namedParameter

    Det okvalificerade namnet på en parameter som argExpr tilldelas.

Antalet argument får inte vara större än det antal parametrar som angetts för proceduren. Om du anger färre argument än det finns parametrar måste parametrarna definieras med DEFAULT värden.

Exempel

> 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