CALL¶
저장 프로시저 를 호출합니다.
- 참고 항목:
구문¶
CALL <procedure_name> ( [ [ <arg_name> => ] <arg> , ... ] )
[ INTO :<snowflake_scripting_variable> ]
필수 매개 변수¶
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);
이름으로 인자를 지정할 수도 있습니다.
CALL sv_proc1(province => 'Manitoba', amount => 127.4);
다음 예에서는 세션 변수 를 저장 프로시저에 대한 입력 인수로 설정하고 전달하는 방법을 보여줍니다.
SET Variable1 = 49;
CALL sv_proc2($Variable1);
다음은 Snowflake Scripting 변수에서 저장 프로시저의 반환 값을 캡처하는 Snowflake Scripting 블록의 예입니다.
DECLARE
ret1 NUMBER;
BEGIN
CALL sv_proc1('Manitoba', 127.4) into :ret1;
RETURN ret1;
END;
참고: 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;
$$
;
저장 프로시저 생성 및 호출에 대한 보다 다양한 예는 저장 프로시저 작업하기 을 참조하십시오.