Delen via


BELLEN

Belangrijk

Deze functie bevindt zich in openbare preview-versie.

Van toepassing op:controleren gemarkeerd als Ja Databricks Runtime 17.0 en hoger

Roept een opgeslagen procedure op naam aan en geeft argumenten door naar en vanuit de procedure.

Procedure-aanroepen kunnen tot maximaal 64 niveaus worden genest.

Syntaxis

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

Parameterwaarden

  • procedure_name

    De naam van de procedure die moet worden aangeroepen. De procedurenaam kan eventueel worden gekwalificeerd met een schemanaam. Als de naam niet is gekwalificeerd, wordt de procedure afgehandeld in het huidige schema. Als de procedure niet bestaat, wordt er een ROUTINE_NOT_FOUND fout gegenereerd.

  • argument

    Voor argumenten die zijn toegewezen aan IN parameters, elke expressie van een type dat kan worden omgezet in de parameter of het DEFAULT trefwoord. Voor OUT en INOUT parameters moet het argument een sessievariabele of lokale variabele zijn.

    Als de procedure mislukt, blijven de argumentwaarden van de OUT en INOUT parameters ongewijzigd.

  • namedParameter

    De niet-gekwalificeerde naam van een parameter waaraan de argExpr parameter is toegewezen.

Het aantal argumenten mag niet groter zijn dan het aantal parameters dat is opgegeven voor de procedure. Als u minder argumenten opgeeft dan er parameters zijn, moeten de parameters worden gedefinieerd met DEFAULT waarden.

Voorbeelden

> 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