PostgreSQL는 프로그래밍 언어를 이용해 함수를 직접 만들어 실행하기 위해 PL/psSQL이라는 언어를 제공한다. PL/psSQL를 활용한다는 것 = Stored Procedure를 사용한다는 것! 이를 이용해 Trigger를 사용할 수 있는 발판이 된다.
PL/psSQL은 PostgreSQL을 보다 편리하고 빠르게 사용할 수 있을 뿐만 아니라 데이터베이스 자체의 기능을 확장할 수 있는 기반을 제공한다.
SQL로 처리하기 복잡한 데이터의 삽입, 삭제 등을 보다 편리하게 하기 위해 고안된 것이다. 기본적으로 SQL을 이용하나, 전체적인 문법은 기존의 프로그래밍 언어와 유사하다.
Stored Procedure(저장 프로시저: SP) 란?
DB내부에 저장된 일련의 SQL명령문들을 하나의 함수처럼 실행하기 위한 쿼리의 집합. 즉, 쿼리문의 함수화 버전이다.
절차형 SQL을 활용하여 일련의 SQL처리를 수행하고, 수행 결과를 단일 값으로 반환할 수 있는 절차형 SQL이다.
DBMS에서 제공되는 공통적 함수 이외에 사용자가 직접 정의하고 작성할 수 있다.
CREATE [OR REPLACE] FUNCTION 함수명(arguments)
RETURNS 도메인 타입
LANGUAGE plpgsql --함수가 만들어지는데 사용된 언어
DECLARE
_TYPE
BEGIN
<function_body> --실제 실행 부분
RETURN {variable_name | value}
END;
--------------------------------------------------------
ex> company 테이블의 튜플의 수(카디널리티)를 구하는 함수
CREATE [OR REPLACE] FUNCTION fn_compangTotal()
RETURNS integer
LANGUAGE plpgsql
DECLARE
_CNT INTEGER;
BEGIN
_CNT := count(*) from (
SELECT count(*) FROM company;
RETURN _CNT;
END;
이렇게 만든 함수는 SELECT문으로 조회할 수 있다.
SELECT fn_compangTotal();
참고:
https://genesis8.tistory.com/183
http://www.gisdeveloper.co.kr/?p=4546
https://this1.tistory.com/entry/Procedure와-Function의-차이-PLSQL-관련