1. 함수
1) 함수
-원하는 목적의 달성을 위해 일련의 SQL문 작업들을 하나의 단위로 묶는 것을 의미한다
-여러 작업들을 묶어 하나의 함수 이름으로 부를 수 있다
-다른 DBMS에서는 저장프로시저 라고도 한다
2) 함수를 사용하는 이유
-복잡하고 시간이 많이 걸리는 작업들을 일일이 수행하지 않고 하나의 단위로 묶어서 작을 쉽게 하기 위해서이다
-함수 사용 여부에 따라 서버와 클라이언트 간의 통신 횟수가 현저히 차이가 난다
-함수를 사용하지 많으면 각각의 쿼리응 일일이 서버와 통신해야 하는 반면
함수를 사용하면 한번의 통신만 하면 작업이 가능하다\
-함수를 사용하면 여러번의 통신횟수가 줄어들어 DBMS의 작업 처리가 더 빨라진다
3) postgreSQL 프로시저 언어란
-SQL, C언어 등 다양한 재료로 함수를 만들 수 있다
-프로시저 언어는 함수와 트리거를 만드는데 사용할 수 있다
-프로시저 언어로는 PL/pgSQL , PL/TCL, PL/Perl, PL/Python 등이 있다
-프로시저 언어를 추가로 쓰는 이유는 복잡한 연산처리가 용이하기 때문이다
-프로시저 언어를 사용하려면 명령어를 언어를 추가할 데이터베이스에 접속한 다음 입력하여 원하는 언어를 데이터베이스에 설치하면 된다
CREATE LANGUAGE 언어이름
EX) CREATE LANGUAGE plperl
4) postgreSQL에서 함수 사용하기
-함수를 만드는 코드
CREATE FUNCTION function_name(parameter_1 type, parameter_2 type)
-CREATE FUNCTION으로 함수를 만든다는 선언을 한다
-function_name 자리에 만들고자 하는 함수의 이름을 입력한다
-CREATE 대신에 REPLACE를 쓴다면 기존의 함수를 수정하겠다는 의미이다
-괄호안에는 해당 함수의 두 인자 parameter_1, parameter_2를 선언하고 각각 인자의 형(TYPE)을 입력한다
RETURNS return_type AS
'BEGIN
...
END'
-함수의 반환값 return_type의 형(type)을 입력한다
-AS 뒤의 BEGIN과 END 사이에 함수의 목적, 즉 함수가 실행할 SQL코드를 입력한다
-BEGIN과 END는 ''로 감쌀 수 있고, $$...$$로도 감쌀 수 있다
LANGUAGE language_name;
-마지막으로 함수를 어떤 프로그래밍 언어로 작성할지 결정한다
-language_name자리에 해당 프로그래밍 언어의 이름을 입력한다
-위의 코드들을 완성하면 다음과 같은 형태로 postgreSQL 프로시저 언어 함수를 생성할 수 있다
CREATE FUNCTION function_name(parameter_1 type, parameter_2 type)
RETURNS return_type AS
$$ BEGIN
...
END; $$
LANGUAGE language_name;
---------------------------------------------------------------------------
EX) 정수a와b를 인자로 하고 두 정수의 곱을 리턴하는 mul 함수 생성
CREATE FUNCTION mul (a INTEGER, b INTEGER)
RETURNS INTEGER AS
$$ BEGIN
RETURN a * b;
END; $$
LANGUAGE PLpgSQL;
'SQL > 모두를 위한 postgreSQL' 카테고리의 다른 글
[PostgreSQL] 7. 데이터 인덱싱_(3) (0) | 2023.03.23 |
---|---|
[PostgreSQL] 7. 데이터 인덱싱_(2) (1) | 2023.03.23 |
[PostgreSQL] 7. 데이터 인덱싱_(1) (0) | 2023.03.21 |
[PostgreSQL] 6. 데이터 모델링 (0) | 2023.03.20 |
[PostgreSQL] 5. 데이터의 결합_3 (0) | 2023.03.18 |