Megosztás a következőn keresztül:


HÍVÁS

Fontos

Ez a funkció nyilvános előzetes verzióban van.

A következőre vonatkozik:igen metszett Databricks SQL igen metszett Databricks Runtime 17.0 és újabb

Név alapján meghív egy tárolt eljárást, és argumentumokat ad át az eljárásnak.

Az eljáráshívások legfeljebb 64 szinten ágyazhatók be.

Szemantika

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

Paraméterek

  • procedure_name

    A meghívandó eljárás neve. Az eljárás neve választhatóan sémanévvel is minősíthető. Ha a nevet nem minősítették, az eljárás az aktuális sémában oldódik fel. Ha az eljárás nem létezik, ROUTINE_NOT_FOUND hibaüzenet jelenik meg.

  • érv

    A IN paraméterekhez hozzárendelt argumentumok esetében bármilyen típusú kifejezés megadható, amely a paraméterhez vagy a DEFAULT kulcsszóhoz konvertálható. OUT és INOUT paraméterek esetében az argumentumnak munkamenet-változónak vagy helyi változónak kell lennie.

    Ha az eljárás meghiúsul, a OUTINOUT paraméterek argumentumértékei változatlanok maradnak.

    Megjegyzés:

    Az argumentumnak meg kell egyeznie a paraméter adattípusával. Ez magában foglalja például egy DATE paraméterhez a '2015-01-01' helyett DATE'2015-01-01' megadását.

  • namedParameter

    Annak a paraméternek a nem minősített neve, amelyhez a argExpr paraméter hozzá van rendelve.

Az argumentumok száma nem lehet nagyobb, mint az eljáráshoz megadott paraméterek száma. Ha a paramétereknél kevesebb argumentumot ad meg, a paramétereket értékekkel DEFAULT kell definiálni.

Példák

> 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