데이터베이스/Postgresql
[Postgresql] SQL Error [42601]: 오류: 쿼리에 결과 데이터의 대상이 없음 에러 해결방법
모찌바라기
2024. 4. 12. 19:05
728x90
반응형
LOOP문 내에서 프로시저를 호출하는데, 계속 에러가 발생하길래 확인을 하면서
많은 시간을 날렸다.. 간단한거였는데.. 그래서 정리해봄..
에러내용
SQL Error [42601]: 오류: 쿼리에 결과 데이터의 대상이 없음
Hint: SELECT의 결과를 취소하려면 대신 PERFORM을 사용하십시오.
Where: PL/pgSQL 함수 "dkasjmp.duplicate_sj_safe_child(text,text,text,text,text)" 의 17번째 SQL 문
프로시저 쿼리문
CREATE OR REPLACE FUNCTION public.my_procedure(target_num text)
RETURNS integer
LANGUAGE plpgsql
AS $function$
declare
rec RECORD;
BEGIN
FOR rec IN
SELECT fclt_nm
FROM public.temp_table
loop
select public.other_procedure(target_num);
END LOOP;
return 0;
END;
$function$
;
해결방법
에러문구에서 이미 정답을 말해주고 있다.. 에러문구를 자세히 보면 SELECT대신 PERFORM을 쓰라고 한다...
프로시저 호출시 SELECT대신 PERFORM을 사용하도록 하자.
SELECT PUBLIC.PROCEDURE() => X
PERFORM PUBLIC.PROCEDURE() => O
수정 쿼리문
CREATE OR REPLACE FUNCTION public.my_procedure(target_num text)
RETURNS integer
LANGUAGE plpgsql
AS $function$
declare
rec RECORD;
BEGIN
FOR rec IN
SELECT fclt_nm
FROM public.temp_table
loop
PERFORM public.other_procedure(target_num);
END LOOP;
return 0;
END;
$function$
;
728x90
반응형