PostgreSQL 데이터베이스를 사용해서 테이블과 Function을 생성 후 테이블의 데이터를 선택하여 필드를 반환하는 Function을 호출하는 예제입니다.
파라미터(parameter)가 없는 기본적인 구조입니다.
1. 테이블 생성
CREATE TABLE scheduler.tbl_test (
id varchar(12) NOT NULL,
"name" varchar(255) NOT NULL,
memo varchar(12) NULL
);
![[PostgreSQL] 테이블, Function 생성 후 조회하기 - undefined - undefined - 1. 테이블 생성 [PostgreSQL] 테이블, Function 생성 후 조회하기 - undefined - undefined - 1. 테이블 생성](https://blog.kakaocdn.net/dn/crGvsP/btsCUZKy5az/zEUirJ8jIcBr3mC9kt7Uck/img.png)
2. Function 생성
-- CREATE OR REPLACE FUNCTION 문으로 함수 정의 시작
CREATE OR REPLACE FUNCTION 스키마.함수명(매개변수1 타입1, 매개변수2 타입2, ...)
RETURNS 반환타입
LANGUAGE plpgsql -- 사용할 언어 지정
AS $function$
-- 함수 본문 시작
DECLARE
-- 변수 및 선언부분 (선택사항)
BEGIN
-- 함수 본문
-- 여기에 실제 함수의 동작을 작성합니다.
-- 필요에 따라 SELECT, INSERT, UPDATE, DELETE 등의 SQL 문을 사용하거나
-- 변수를 활용하여 원하는 로직을 작성합니다.
END;
$function$;
-- 함수 정의 종료
-CREATE OR REPLACE FUNCTION: 새로운 함수를 생성하거나 이미 존재하는 함수를 대체합니다.
스키마(schema). 함수명: 함수의 이름과 소속된 스키마를 지정합니다.
(매개변수1 타입1, 매개변수2 타입2, ...): 함수의 매개변수를 정의합니다. 필요에 따라 매개변수가 없을 수도 있습니다.
-RETURNS 반환타입: 함수가 반환하는 데이터의 타입을 정의합니다.
-LANGUAGE plpgsql: 함수가 사용할 언어를 PL/pgSQL로 지정합니다.
-AS $$ ... $$: 함수의 실제 본문이 시작됩니다. 여기에는 변수의 선언, 로직의 작성, SQL 쿼리 등이 들어갑니다.
-DECLARE: 필요한 경우 변수를 선언할 수 있습니다. 선택 사항입니다.
-BEGIN ... END;: 함수의 실제 본문이 위치합니다. 여기에 함수가 수행할 로직을 작성합니다.
CREATE OR REPLACE FUNCTION scheduler.ufx_test()
RETURNS TABLE(id character varying, name character varying, memo character varying)
LANGUAGE plpgsql
AS $function$
BEGIN
RETURN QUERY
SELECT
tt.id as id ,
tt.name as name ,
tt.memo as memo
FROM scheduler.tbl_test tt;
END;
$function$
;
-scheduler.ufx_test라는 이름을 가지며, scheduler.tbl_test 테이블의 데이터를 반환하는 역할을 합니다.
2-1. 함수 정의
CREATE OR REPLACE FUNCTION scheduler.ufx_test()
RETURNS TABLE(id character varying, name character varying, memo character varying)
-scheduler.ufx_test() 함수를 정의합니다.
-RETURNS TABLE은 이 함수가 테이블 형태의 결과를 반환함을 나타냅니다.
-id, name, memo는 반환되는 테이블의 열(Column)들을 정의합니다.
2-2. 함수 내용
BEGIN
RETURN QUERY
SELECT
tt.id as id ,
tt.name as name ,
tt.memo as memo
FROM scheduler.tbl_test tt;
END;
-BEGIN과 END; 사이에 함수의 실제 본문이 위치합니다.
-RETURN QUERY 문은 SELECT 쿼리 결과를 반환합니다.
-scheduler.tbl_test tt에서 데이터를 선택하고 id, name, memo 열을 반환합니다.
3. Function 호출하기
select * from scheduler.ufx_test();
-함수가 반환하는 결과가 출력됩니다. 함수가 반환하는 결과는 함수의 정의에 따라 테이블 형태일 것이며, 이 경우에는 id, name, memo 열을 포함한 테이블 형태의 결과입니다.
![[PostgreSQL] 테이블, Function 생성 후 조회하기 - undefined - undefined - 3. Function 호출하기 [PostgreSQL] 테이블, Function 생성 후 조회하기 - undefined - undefined - 3. Function 호출하기](https://blog.kakaocdn.net/dn/w0yeX/btsC2C1Dsjb/gVKLS4Mo6SILl11hG52gA1/img.png)
'개발이야기 > PostgreSQL' 카테고리의 다른 글
[PostgreSQL] json_build_object, json_agg 사용법, 예제, 활용하기 (JSON Functions) (0) | 2025.01.14 |
---|---|
[PostgreSQL] division by zero 에러 해결하기 (CASE문, NULLIF, COALESCE) (0) | 2024.08.02 |
[PostgreSQL] ORDER BY 특정 순서로 먼저 정렬 하기 (ORDER BY CASE WHEN, ORDER BY CASE WHEN IN (0) | 2024.07.17 |
[PostgreSQL] Function IF문 / CASE문 사용방법, 예제 (2) | 2024.01.23 |
[PostgreSQL] Function 동적 페이징 처리하기 (LIMIT, OFFSET) (0) | 2024.01.05 |
댓글