SQL의 모든 것/SQL의 이론 및 기초
PL/pgSQL - SQL 프로시저 언어
IT너드남
2024. 1. 26. 00:53
1. 소개
PL/pgSQL은 PostgreSQL 데이터베이스 시스템에서 로드가능한 프로시저 언어다. PL/pgSQL의 설계 목적은 다음과 같은 특징을 가지는 로드가능한 절차적 언어다.
- 함수, 프로시져, 트리거를 만들기 위해 사용할 수 있다.
- SQL 언어에 제어 구조를 추가한다.
- 복잡한 연산을 할 수 있다.
- 모든 사용자정의 타입, 함수, 프로시져, 연산자를 상속한다.
- 서버를 신뢰할 수 있게 정의할 수 있으며, 사용하기 쉽다.
1.1 장점
SQL은 대부분의 DBMS에서 사용되는 질의 언어이다. 쉽긴 하나, 모든 SQL 구문은 데이터베이스 서버에서 반드시 구문마다 개별적으로 실행된다. 다시 말해, 클라이언트 애플리케이션은 데이터베이스 서버에 반드시 쿼리를 개별적으로 보내고, 각 쿼리가 처리될 때까지 기다린 다음 결과를 받아서 연산을 한 후에 다음 쿼리를 서버로 보내므로 네트워크 부하를 일으킬 수 있다.
그에 반면, PL/pgSQL은 절차적 언어의 기능을 가지고 있고 SQL을 사용하기 쉽게 때문에, 데이터베이스 서버 내부에서의 쿼리와 연산을 그룹화 할 수 있고, 클라이언트/서버 통신 부하를 절약할 수 있다.
- 클라이언트와 서버간의 불필요한 통신을 제거
- 클라이언트가 불필요한 중간 결과물들을 가지고 있거나 서버/클라이언트간에 전송하지 않아도 됨
- 불필요한 쿼리 처리를 하지 않아도 됨
이런 요소들로 저장 함수를 사용하지 않는 애플리케이션보다 성능 향상을 기대할 수 있다.
1.2 지원되는 매개 변수와 결과 자료형
PL/pgSQL에서 작성된 함수는 서버에서 지원하는 스칼라나 배열 자료형을 매개 변수로 받을수 있다. 또한, 이름으로 지정된 복합 타입(로우 타입)을 받거나 반환할 수 있다. 또한, VARIADIC 지시자를 이용해서 여러개의 매개 변수를 선언할 수 있으며, 이는 SQL함수와 같은 방법으로 작동한다.
그 외로, 다형 자료형을 입력받고 반환할 수도 있으며, 자세한 내용은 뒤에서 다뤄진다.