이 가이드에서는 VARIADIC
유형에 초점을 맞추고 최적화 전략을 제공하면서 단일 매개변수를 사용하여 여러 값을 PostgreSQL 함수에 효율적으로 전달하는 방법을 보여줍니다.
VARIADIC
매개변수 활용PostgreSQL의 VARIADIC
유형은 단일 매개변수 내에서 여러 입력 값을 처리하기 위한 간결한 솔루션을 제공합니다. 샘플 기능을 적용해 보겠습니다.
<code class="language-sql">CREATE OR REPLACE FUNCTION test(VARIADIC int[]) RETURNS TABLE (job_id int, job_reference int, job_job_title text, job_status text) AS $$ BEGIN RETURN QUERY SELECT j.id, j.reference, j.job_title, ltrim(right(j.status, -2)) AS status -- Optimized string trimming FROM jobs j JOIN company c ON j.id = c.id WHERE c.active AND NOT c.delete_flag AND NOT j.delete_flag AND (j.id = ANY() OR '{<b>-1</b>}'::int[] = ) ORDER BY j.job_title; END; $$ LANGUAGE plpgsql;</code>
이 수정된 함수는 정수 배열(int[]
)을 입력으로 허용합니다. VARIADIC
키워드를 사용하면 함수가 다양한 개수의 정수 인수를 받아 자동으로 배열로 변환할 수 있습니다.
VARIADIC
배열을 사용하여 함수를 직접 호출할 수 있습니다.
<code class="language-sql">SELECT * FROM test(<b>VARIADIC</b> '{1, 2, 3}'::int[]);</code>
기능적으로 다음과 동일합니다.
<code class="language-sql">SELECT * FROM test(1, 2, 3);</code>
효율적인 문자열 자르기: PostgreSQL 9.1 이상의 경우 음수 길이(right()
)와 함께 right(j.status, -2)
을 사용하면 substring()
에 비해 선행 문자를 제거하는 더 빠르고 깔끔한 방법을 제공합니다.
데이터 유형 고려 사항: DeleteFlag
이 부울 값을 나타내는 경우 boolean
데이터 유형을 사용하는 것이 text
보다 더 효율적이고 의미상 정확합니다. WHERE
절에서 열 이름 주위에 불필요한 큰따옴표를 사용하지 마세요.
가독성 향상과 잠재적인 성능 향상을 위해 순수 SQL 구현을 고려하세요.
<code class="language-sql">CREATE OR REPLACE FUNCTION f_test(VARIADIC int[]) RETURNS TABLE (id int, reference int, job_title text, status text) AS $func$ SELECT j.id, j.reference, j.job_title , ltrim(right(j.status, -2)) AS status FROM job j JOIN company c ON j.id = c.id WHERE c.active AND NOT c.delete_flag AND NOT j.delete_flag AND (j.id = ANY() OR '{-1}'::int[] = ) ORDER BY j.job_title $func$ LANGUAGE sql;</code>
이 단순화된 버전은 향상된 간결함으로 동일한 기능을 구현합니다. 특정 스키마와 일치하도록 테이블 및 열 이름을 조정하는 것을 잊지 마세요.
위 내용은 단일 매개변수를 사용하여 PostgreSQL 함수에 여러 값을 전달하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!