저장 프로시저 및 UDTF: 호출에서 우선하는 인자 이름¶
호출에 명명된 인자가 포함된 저장 프로시저와 UDTF(사용자 정의 테이블 함수)에 대한 호출에서 Snowflake는 다음과 같이 인자 위치보다 인자 이름에 우선순위를 부여합니다.
- 이전:
명명된 인자가 있는 프로시저 또는 UDTF(사용자 정의 테이블 함수)를 호출할 때 Snowflake는 인자 이름을 무시하고 인자 위치를 사용하여 프로시저 또는 함수에 전달되는 값을 결정합니다.
- 현재:
프로시저 및 UDTF 호출에서 인자 이름이 인자 위치보다 우선합니다. 이로 인해 동작 변경 전과는 달리 다음 동작이 발생할 수 있습니다.
저장 프로시저 또는 사용자 정의 테이블 함수에 대해 이전에 작동 중이던 호출로 인해 오류가 발생할 수 있습니다.
인자 이름으로 인해 인자가 이전과는 다른 순서로 전달될 수 있습니다. 이로 인해 오류, 잘못된 결과 또는 잘못된 데이터 삽입이 발생할 수 있습니다.
인자 이름으로 인해 동일한 이름을 가진 다른 저장 프로시저가 호출될 수 있습니다. 이로 인해 오류, 잘못된 결과 또는 잘못된 데이터 삽입이 발생할 수 있습니다.
다음 예에서는 변경 전후에 두 저장 프로시저에 대한 호출이 어떻게 다를 수 있는지 보여줍니다.
다음 예에서는 변경 전후에 두 저장 프로시저에 대한 호출이 어떻게 다를 수 있는지 보여줍니다.
-- One stored procedure CREATE OR REPLACE PROCEDURE proc(STRARG1 varchar, STRARG2 varchar) RETURNS VARCHAR LANGUAGE SQL AS $$ BEGIN return 'hello'; END $$; -- Another procedure CREATE OR REPLACE PROCEDURE proc(ARG1 number, ARG2 number) RETURNS BOOLEAN LANGUAGE SQL AS $$ BEGIN return ARG1 < ARG2; END $$; -- Example A -- Before: returns 'hello' -- After: returns TRUE CALL PROC(ARG1 => '5', ARG2 => '100'); -- Example B -- Before: returns TRUE -- After: returns 'hello' CALL PROC(STRARG1 => 5, STRARG2 => 100); -- 'hello'.
참조: 1017