8장. 함수 쓰기
이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com
대부분의 데이터베이스에서와 마찬가지로 PostgreSQL에서는 일련의 SQL 문을 함께 묶어 하나의 단위로 취급할 수 있으며, 인수를 전달하여 각 실행을 사용자 정의할 수도 있습니다. 데이터베이스마다 이 단위에 대해 저장 프로시저, 사용자 정의 함수 등 다양한 이름을 붙입니다. PostgreSQL에서는 이를 단순히 함수로 지칭합니다.
함수는 SQL 문을 마샬링하는 것 외에도 PL을 사용하여 SQL 실행을 제어하는 기능을 추가하는 경우가 많습니다. PostgreSQL은 함수 작성을 위한 다양한 언어를 제공합니다. SQL, C, PL/pgSQL, PL/Perl 및 PL/Python은 설치 프로그램과 함께 패키지로 제공되는 경우가 많습니다. 또한, JavaScript로 절차적 함수를 작성할 수 있는 PL/V8( )도 있습니다. PL/V8은 웹 개발자들이 즐겨 사용하는 언어이며 'JSON'에서 다루는 기본 제공 JSON 및 JSONB 데이터 유형과 함께 사랑받는 동반자라고 할 수 있습니다.
또한 PL/R, PL/Java, PL/sh, PL/TSQL과 같은 추가 언어를 설치할 수 있으며, 고급 데이터 처리 및 인공 지능을 위한 실험적인 언어인 PL/Scheme 또는 PL/OpenCL도 설치할 수 있습니다. 사용 가능한 언어 목록은 절차적 언어에서 확인할 수 있습니다.
PostgreSQL 함수의 해부학
PostgreSQL 함수( )는 기본 함수, 집계 함수, 윈도우 함수, 트리거 함수의 범주에 속합니다. 함수의 기본 구조에 대해 자세히 설명한 다음 여기에서 다양한 종류의 특수 함수 유형이 어떻게 확장되는지 자세히 살펴보겠습니다.
기능 기본 사항
함수 작성에 어떤 언어를 선택하든 모든 함수는 예제 8-1에 표시된 것처럼 비슷한 구조를 공유합니다.
예제 8-1. 기본 기능 구조
CREATE OR REPLACE FUNCTIONfunc_name(arg1arg1_datatypeDEFAULTarg1_default) RETURNSsome type | set of some type | TABLE (..)AS $$BODY of function$$ LANGUAGElanguage_of_function
인수는 기본값을 가질 수 있으며, 함수 호출자가 이를 생략할 수 있습니다. 선택적 인수는 함수 정의에서 선택적 인수가 아닌 인수 뒤에 위치해야 합니다.
인수 이름 은 선택 사항이지만 함수 본문 내에서 이름으로 인수를 참조할 수 있으므로 유용합니다. 예를 들어 세 개의 입력 인수를 받도록 정의된 함수를 생각해 보겠습니다(두 개는 선택 사항):
big_elephant(ear_sizenumeric,skin_colortextDEFAULT'blue',nametextDEFAULT'Dumbo')
함수 본문에서 이름(ear_size, skin_color, 등)으로 인수를 참조할 수 있습니다. 이름이 지정되지 않은 경우 함수 ...