CALL

저장 프로시저 를 호출합니다.

참고 항목:

CREATE PROCEDURE , SHOW PROCEDURES

구문

CALL <procedure_name> ( [ [ <arg_name> => ] <arg> , ... ] )
  [ INTO :<snowflake_scripting_variable> ]
Copy

필수 매개 변수

procedure_name ( [ [ arg_name => ] arg , ... ] )

호출할 프로시저의 식별자(procedure_name) 및 입력 인자를 지정합니다.

이름(arg_name => arg) 또는 위치(arg)로 입력 인자를 지정할 수 있습니다.

다음 사항을 참고하십시오.

  • 이름 또는 위치로 모든 인자를 지정해야 합니다. 일부 인자는 이름으로, 다른 인자는 위치로 지정할 수는 없습니다.

    이름으로 인자를 지정할 때 인자 이름 주위에 큰따옴표를 사용할 수 없습니다.

  • 두 함수 또는 두 프로시저가 이름은 같지만 인자 유형이 다른 경우 인자 이름이 다르면 인자 이름을 사용하여 실행할 함수 또는 프로시저를 지정할 수 있습니다. 프로시저 및 함수 오버로딩하기 섹션을 참조하십시오.

선택적 매개 변수

INTO :snowflake_scripting_variable

지정된 Snowflake Scripting 변수 를 저장 프로시저의 반환 값으로 설정합니다.

사용법 노트

  • 프로시저 이름이 스키마 내에서 반드시 고유할 필요는 없습니다. 저장 프로시저는 그 이름뿐 아니라 인자 유형으로 식별 및 확인됩니다(즉, 저장 프로시저가 오버로드될 수 있음).

  • Snowflake Scripting 블록 외부에서 호출은 식의 일부가 될 수 없으므로 저장 프로시저에서 반환된 값을 사용할 수 없습니다.

    Snowflake Scripting 블록에서 INTO :snowflake_scripting_variable 을 지정하여 Snowflake Scripting 변수의 저장 프로시저에서 반환 값을 캡처할 수 있습니다.

  • 저장 프로시저는 원자성이 아닙니다. 저장 프로시저의 한 문이 실패할 경우 저장 프로시저의 다른 문이 반드시 롤백되는 것은 아닙니다. 저장 프로시저 및 트랜잭션에 대한 자세한 내용은 트랜잭션 관리 를 참조하십시오.

  • CALL(익명 프로시저 사용) 를 사용하여 익명 프로시저를 만들고 호출할 수도 있습니다.

다음 예에서는 sv_proc1 이라는 저장 프로시저를 호출하고 문자열 리터럴과 숫자를 입력 인자로 전달합니다. 이 예에서는 위치로 인자를 지정합니다.

CALL sv_proc1('Manitoba', 127.4);
Copy

이름으로 인자를 지정할 수도 있습니다.

CALL sv_proc1(province => 'Manitoba', amount => 127.4);
Copy

다음 예에서는 세션 변수 를 저장 프로시저에 대한 입력 인수로 설정하고 전달하는 방법을 보여줍니다.

SET Variable1 = 49;
CALL sv_proc2($Variable1);
Copy

다음은 Snowflake Scripting 변수에서 저장 프로시저의 반환 값을 캡처하는 Snowflake Scripting 블록의 예입니다.

DECLARE
  ret1 NUMBER;
BEGIN
  CALL sv_proc1('Manitoba', 127.4) into :ret1;
  RETURN ret1;
END;
Copy

참고: SnowSQL 또는 Classic Console 을 사용하는 경우 대신 다음 예를 사용하십시오(SnowSQL 및 Classic Console 에서 Snowflake Scripting 사용하기 참조).

EXECUTE IMMEDIATE $$
DECLARE
  ret1 NUMBER;
BEGIN
  CALL sv_proc1('Manitoba', 127.4) into :ret1;
  RETURN ret1;
END;
$$
;
Copy

저장 프로시저 생성 및 호출에 대한 보다 다양한 예는 저장 프로시저 작업하기 을 참조하십시오.