사용자 정의 함수와 저장 프로시저

사용자 정의 함수와 저장 프로시저 (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;

더 보기:

  • CALL
  • CREATE FUNCTION
  • CREATE PROCEDURE

더 알아보기 (Learn more)

HPL/SQL에서 정의한 함수와 프로시저는 HMS에 등록되어 마치 내장 함수처럼 어디서든 재사용할 수 있어요. 자주 쓰는 로직은 CREATE FUNCTION으로 함수화하고, 상태를 갖는 절차는 CREATE PROCEDURE로 만든 뒤 CALL로 호출하는 패턴을 권장합니다.