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
반응형
'데이터베이스 > Postgresql' 카테고리의 다른 글
[Postgresql] ST_Transform과 ST_SetSRID 함수 차이점 (0) | 2023.12.22 |
---|---|
[Postgresql] GeometryCollection이란? (0) | 2023.05.20 |
[Postgresql] ST_GeomFromGeoJSON 함수를 통해 GeoJson(문자열)을 Geometry(공간정보)형식으로 변환해보자. (0) | 2023.05.20 |
[Postgres] Function(함수) 내용 조회하는 방법 (0) | 2023.04.27 |
[GIS] SHP파일 추출시 Initializing... Could not create dbf file 에러 해결방법 (0) | 2023.03.13 |