개발이야기/PostgreSQL

[PostgreSQL] 테이블, Function 생성 후 조회하기

후린개발자 2024. 1. 4.
반응형

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. 테이블 생성
테이블 생성

 

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 호출하기
함수 호출 결과

반응형

댓글