Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Viktigt!
Den här funktionen finns som allmänt tillgänglig förhandsversion.
Gäller för:
Databricks
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
-
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_FOUNDfel. -
För argument som tilldelats parametrar
IN, valfritt uttryck av en typ som kan överföras till parametern eller nyckelordetDEFAULT. FörOUTochINOUTparametrar måste argumentet vara en sessionsvariabel eller lokal variabel.Om proceduren misslyckas förblir argumentvärdena för parametrarna
OUTochINOUTofö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 enDATEparameter. -
Det okvalificerade namnet på en parameter som
argExprtilldelas.
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