사용자 정의 함수와 저장 프로시저
사용자 정의 함수와 저장 프로시저 (User-Defined Functions and Stored Procedures)
HPL/SQL을 사용하면 CREATE FUNCTION 문으로 사용자 정의 함수를, CREATE PROCEDURE 문으로 저장 프로시저(저장 프로시저)를 정의할 수 있어요.
출처: 문서
본문
현재 스크립트에서 함수와 프로시저 정의하기
HPL/SQL 함수와 프로시저를 사용하는 가장 쉬운 방법은, 실제 사용하기 전에 현재 스크립트 안에서 정의하는 거예요.
예를 들어:
CREATE FUNCTION hello(text STRING)
RETURNS STRING
BEGIN
RETURN 'Hello, ' || text || '!';
END;
CREATE PROCEDURE set_message(IN name STRING, OUT result STRING)
BEGIN
SET result = 'Hello, ' || name || '!';
END;
-- Invoke the function
PRINT hello('world');
-- Call the procedure and print the results
DECLARE str STRING;
CALL set_message('world', str);
PRINT str;
함수/프로시저를 정의하면, 그 메타데이터가 HMS(Hive Metastore)에 영구적으로 저장되고, 이후 어떤 HPL/SQL 및 HQL 식에서든 내장 함수(built-in function)처럼 사용할 수 있어요. 프로시저는 CALL 문으로 호출하면 됩니다.
영구적으로 삭제하려면 drop procedure/function을 사용하세요.
DROP PROCEDURE set_message;
DROP FUNCTION hello;
더 보기:
CALLCREATE FUNCTIONCREATE PROCEDURE
더 알아보기 (Learn more)
HPL/SQL에서 정의한 함수와 프로시저는 HMS에 등록되어 마치 내장 함수처럼 어디서든 재사용할 수 있어요. 자주 쓰는 로직은 CREATE FUNCTION으로 함수화하고, 상태를 갖는 절차는 CREATE PROCEDURE로 만든 뒤 CALL로 호출하는 패턴을 권장합니다.