본문 바로가기

나는개발자다/기타

postgresql Table의 row를 return하는 procedure

 
create or replace function test() returns user_info as  $$
declare 
	 result user_info%ROWTYPE;
begin
	select * into strict result from user_info where user_no = 22;
EXCEPTION WHEN NO_DATA_FOUND THEN RAISE EXCEPTION 'user info % not found', 22; WHEN TOO_MANY_ROWS THEN RAISE EXCEPTION 'too many % found', 22; return result ;
end; $$ language plpgsql



strict는 반드시 1행만 return 한다는 조건이다. 

Data가 없을 경우 No_DATA_Found
2행 이상일 경우 Too_Many_Rows 에러 발생한다. 
근데 EXCEPTION이 처리되지 않는 상황.. 즉 data를 정확히 1개를 호출될 때는 에러가 발생한다.. 에휴. 어렵다...