호출

적용 대상:예 Databricks SQL 예 Databricks Runtime 17.0 이상

이름으로 저장 프로시저를 호출하고 프로시저에서 인수를 전달합니다.

프로시저 호출은 최대 64개 수준까지 중첩할 수 있습니다.

문법

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

매개 변수

  • procedure_name

    호출할 프로시저의 이름입니다. 프로시저 이름은 필요에 따라 스키마 이름으로 정규화될 수 있습니다. 이름이 정규화되지 않은 경우 프로시저는 현재 스키마에서 처리됩니다. 프로시저가 없 ROUTINE_NOT_FOUND 으면 오류가 발생합니다.

  • 논쟁

    매개 변수 IN에 할당된 인수는 매개 변수로 캐스팅할 수 있는 형식의 식이나 DEFAULT 키워드일 수 있습니다. 인수의 경우 OUT 및 INOUT 매개 변수는 세션 변수 또는 지역 변수여야 합니다.

    프로시저가 실패하면 OUT 및 INOUT 매개 변수의 인수 값은 변경되지 않은 상태로 유지됩니다.

    비고

    인수는 매개 변수의 데이터 형식과 일치해야 합니다. 예를 들어, DATE'2015-01-01' 대신 '2015-01-01'와 같은 DATE 매개변수를 지정하는 것이 포함됩니다.

  • namedParameter

    할당된 매개 변수 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