I가 다음 코드가 포함 된 포스트그레스 SQL 저장 프로 시저 :단순화 포스트그레스 SQL 기능
IF something = TRUE THEN
SELECT id INTO some_id FROM some_table WHERE some conditions LIMIT 1;
RETURN QUERY SELECT * FROM some_table WHERE some conditions LIMIT 1;
ELSE
SELECT id INTO some_id FROM some_table WHERE some OTHER conditions LIMIT 1;
RETURN QUERY SELECT * FROM some_table WHERE some OTHER conditions LIMIT 1;
END IF;
DELETE FROM some_table where id = some_id;
위의 코드를 단순화 할 수있는 방법이 있나요를? IF
과 ELSE
에는 반복 코드에 대해 을 수행 할 수있는 것이 없지만 매번 2 SELECT
을 갖는 을 피할 수있는 방법이 있습니까? some_id
에 무엇을 넣을 수 있습니까? RETURN QUERY
? 함수가 당신이 게시 것만 않는 경우
당신은 최신 버전에'... RETURN 쿼리 EXECUTE'사용'형식으로 생성 된 동적 SQL 문자열로 그것을 할 수 있습니다 '및 문자열 연결. –
당신의'IF' 브랜치에'RETURN' 문이 있기 때문에 당신의'DELETE' 문은 결코 실행되지 않습니다. – pozs
@pozs : 아니요. 'RETURN'과 달리 'RETURN QUERY'가 함수에서 빠져 나오지 않습니다. –