POSTGRESQL 테이블 값 반환에 관한 질문입니다. 0 1 706

by 레거시 [SQL Query] postgresql 입문자 [2019.09.02 14:53:36]


우선, 아래에 제 글이 있는데도 불구하고, 추가적으로 질문 드려 죄송합니다.

제가 드리고 싶은 질문으로는, 매개변수에 테이블 명을 집어넣어 FUNCTION내의 BEGIN의 계산식의 처리에 따라 결과를 출력하는, FUNCTION을 만들고 싶습니다.

a테이블

NAME SUB_NAME 일련번호 원산지 출하지  
채소 S0010 대한민국 강원도  
채소 배추 S0020 대한민국 부산  
채소 오이 S0030 대한민국 인천  
채소 호박 S0040 대한민국 인천  

B 테이블

NAME 일련번호 PRICE 원산지 출하지
고랭지배추 S0020 25000 대한민국 부산
고랭지배추 S0178 2300 수입 강원도
어딘가의 배추 S0179 2150 수입 강원도
배추 S0020 12590 대한민국 부산

 

다음과 같은 테이블이 존재할 시에

이하의 결과를 출력하고 싶습니다 이 때,

비교 값이 되는 키는 일련번호와 원산지 출하지로 설정하고 싶습니다.

이 때 기동문으로서는 select * from [function_name] ({a테이블명}, {b테이블명}) 과 같이 하고 싶습니다.

SUB_NAME 일련번호 원산지 출하지 NAME 일련번호 원산지 출하지
배추 S0020 대한민국 부산 고랭지배추 S0020 대한민국 부산
배추 S0020 대한민국 부산 배추 S0020 대한민국 부산

 

제 나름대로 적어본 쿼리는

create or replace function table_diff (
	table_a name[] default '{}'
   ,table_b name[] default '{}'
)
returns table
AS
$$ BEGIN
	SELECT a.*
	FROM table_a a
	LEFT JOIN table_b b
	ON a.serial_code = b.serial_code
	       a.origin = b.origin
		   a.shipping = b.shipping
END; $$
language plpgsql;

이러한 식인데... 인터넷을 통해서도 조사해보고 구루비를 통해서 이전에 비슷한 질문이 없었나 찾아보았으나...

뭐가 부족한지 뭐가 필요한지... 모호한 상황에 봉착하여, 도움을 요청드립니다

다시한번, 아래 제 글이 있음에도 불구하고 다시 글을 올린 점 죄송하게 생각합니다.

이상 잘 부탁드립니다.

by 마농 [2019.09.04 10:47:56]

테이블명은 바인드 변수처리하면 안됩니다.
동적쿼리 방식으로 구현해야 합니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입