중요합니다
이 기능은 공개 미리보기 단계에 있습니다.
적용 대상:
Databricks SQL
Databricks Runtime 17.0 이상
이름으로 저장 프로시저를 호출하고 프로시저에서 인수를 전달합니다.
프로시저 호출은 최대 64개 수준까지 중첩할 수 있습니다.
비고
CALL 문은 ODBC에서 지원되지 않습니다.
문법
CALL procedure_name( [ argument [, …] ]
[ namedParameter => argument ] [, ...] )
매개 변수
-
호출할 프로시저의 이름입니다. 프로시저 이름은 필요에 따라 스키마 이름으로 정규화될 수 있습니다. 이름이 정규화되지 않은 경우 프로시저는 현재 스키마에서 처리됩니다. 프로시저가 없
ROUTINE_NOT_FOUND으면 오류가 발생합니다. -
매개 변수
IN에 할당된 인수는 매개 변수로 캐스팅할 수 있는 형식의 식이나DEFAULT키워드일 수 있습니다. 인수의 경우OUT및INOUT매개 변수는 세션 변수 또는 지역 변수여야 합니다.프로시저가 실패하면
OUT및INOUT매개 변수의 인수 값은 변경되지 않은 상태로 유지됩니다.비고
인수는 매개 변수의 데이터 형식과 일치해야 합니다. 예를 들어,
DATE'2015-01-01'대신'2015-01-01'와 같은DATE매개변수를 지정하는 것이 포함됩니다. -
할당된 매개 변수
argExpr의 정규화되지 않은 이름입니다.
인수 수는 프로시저에 지정된 매개 변수 수보다 크지 않아야 합니다.
매개 변수보다 더 적은 인수를 지정하는 경우 매개 변수를 값으로 DEFAULT 정의해야 합니다.
예시
> 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
관련 문서
- DECLARE VARIABLE
- 절차 설명
- CREATE PROCEDURE