본문 바로가기

나는개발자다/기타

postgresql procedure에서 table의 여러 row를 return 할 때.

CREATE OR REPLACE FUNCTION get_friend(bigint) RETURNS setof user_info AS
$BODY$
declare 
	input_no alias for $1;
	result user_info%ROWTYPE;
BEGIN 
	--for result in EXECUTE 'select *  from user_info' || $1 loop  -- 조건문이다.
	for result in EXECUTE 'select *  from user_info' loop
		return next result;
	end loop;
	return;
	
	
	
end;
$BODY$
  LANGUAGE 'plpgsql'

--select get_friend(2)




기본적으로 LANGUAGE 'plpgsql'를 LANGUAGE 'sql' 로 하고 select * from user_info 로 하게되면 쉽게 가능하다.

하지만 변수 $1을 사용하려면 plpgsql 를 사용해야 하는 문제가 발생한다.

그래서 위 방법을 사용했다.