집 >데이터 베이스 >MySQL 튜토리얼 >PostgreSQL에서 단일 함수 매개변수에 여러 값을 전달하려면 어떻게 해야 합니까?
단일 매개변수에 여러 값을 전달하려면 VARIADIC 데이터 유형을 사용할 수 있습니다. 이를 통해 매개변수에 대한 값 배열을 지정할 수 있습니다. job_ids라는 VARIADIC 매개변수를 허용하도록 다음 함수를 수정합니다.
<code class="language-sql">CREATE OR REPLACE FUNCTION test_var(VARIADIC job_ids int[]) RETURNS TABLE ( job_id int, job_reference int, job_job_title text, job_status text ) AS $$ BEGIN RETURN QUERY SELECT jobs.id, jobs.reference, jobs.job_title, ltrim(right(jobs.status, -2)) AS status -- 使用right()函数改进字符串处理 FROM jobs INNER JOIN company c ON c.id = jobs.id -- 使用INNER JOIN改进查询效率 WHERE jobs."DeleteFlag" = '0' AND c.DeleteFlag = '0' AND c.active = '1' AND (jobs.id = ANY(job_ids) OR job_ids = '{ -1 }') -- 简化条件判断 ORDER BY jobs.job_title; END; $$ LANGUAGE plpgsql;</code>
이제 job_ids 매개변수에 값 배열을 전달하여 test_var 함수를 호출할 수 있습니다. 예:
<code class="language-sql">SELECT * FROM test_var('{270, 378}');</code>
이렇게 하면 ID가 270 및 378인 작업 데이터가 반환됩니다.
VARIADIC 매개변수를 사용하는 것 외에도 right()
함수를 음수 길이와 함께 사용하여 문자열 시작 부분의 문자를 잘라낼 수도 있습니다. 이는 substring
을 사용하는 것보다 더 빠르고 간단합니다.
또한 DeleteFlag
열의 데이터 유형이 텍스트가 아닌 부울인지 확인하세요. 이를 통해 정확한 비교와 효율성이 보장됩니다.
마지막으로 답변에 제공된 f_test 함수는 PL/pgSQL의 사용을 피하고 이러한 문제를 해결하는 간결한 SQL 함수를 보여줍니다. 실제 요구 사항에 따라 적절한 기능 구현 방법을 선택하는 것이 좋습니다.
위 내용은 PostgreSQL에서 단일 함수 매개변수에 여러 값을 전달하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!