가변 입력 매개변수를 사용하는 함수
PostgreSQL에서는 저장 프로시저와 함수를 정의하여 가변 입력 매개변수를 처리할 수 있습니다. 이를 통해 데이터베이스 작업을 실행할 때 유연성이 향상됩니다.
가변 입력 매개변수를 처리하는 한 가지 접근 방식은 각 목적에 맞는 별도의 함수를 생성하는 것입니다. 그러나 이로 인해 특히 열이 많은 테이블의 경우 함수가 급증할 수 있습니다.
대체 접근 방식은 모드 매개변수를 사용하여 사용할 특정 입력 매개변수를 결정하는 단일 함수를 정의하는 것입니다. 이 접근 방식은 더 효율적이며 여러 기능이 필요하지 않습니다.
예
사용자 정의 사이트 정보로 사이트 테이블을 업데이트하려면 다음 함수를 고려하세요.
CREATE OR REPLACE FUNCTION update_site( mode integer, name character varying, city character varying, telephone integer, ) RETURNS integer AS $$ BEGIN IF mode = 0 THEN BEGIN UPDATE "Sites" SET ("City","Telephone") = (city,telephone) WHERE "SiteName" = name; RETURN 1; EXCEPTION WHEN others THEN RAISE NOTICE 'Error on site update: %, %',SQLERRM,SQLSTATE; RETURN 0; END; ELSIF mode = 1 THEN BEGIN UPDATE "Sites" SET "City" = city WHERE "SiteName" = name; RETURN 1; EXCEPTION WHEN others THEN RAISE NOTICE 'Error on site update: %, %',SQLERRM,SQLSTATE; RETURN 0; END; ELSIF mode = 2 THEN BEGIN UPDATE "Sites" SET "Telephone" = telephone WHERE "SiteName" = name; RETURN 1; EXCEPTION WHEN others THEN RAISE NOTICE 'Error on site update: %, %',SQLERRM,SQLSTATE; RETURN 0; END; ELSE RAISE NOTICE 'Error on site update: %, %',SQLERRM,SQLSTATE; RETURN 0; END IF; END; $$ LANGUAGE plpgsql;
이 기능은 세 가지 모드를 처리할 수 있습니다:
모드 매개변수를 사용하여 원하는 업데이트를 할 수 있습니다. 여러 함수가 필요 없이 단일 함수 호출로 수행됩니다.
기본값 매개변수
가변 입력 매개변수를 처리하는 또 다른 옵션은 기본값을 사용하는 것입니다. 이는 모드 매개변수가 필요 없이 선택적 매개변수를 허용합니다. 예를 들어, 다음 함수는 도시가 제공되는 경우에만 도시를 업데이트합니다.
CREATE OR REPLACE FUNCTION update_site( name character varying, city character varying DEFAULT NULL, telephone integer DEFAULT NULL, ) RETURNS integer AS $$ BEGIN UPDATE "Sites" SET ("City", "Telephone") = (city, telephone) WHERE "SiteName" = name; RETURN 1; EXCEPTION WHEN others THEN RAISE NOTICE 'Error on site update: %, %',SQLERRM,SQLSTATE; RETURN 0; END; $$ LANGUAGE plpgsql;
가변 입력 매개변수를 처리하는 가장 좋은 접근 방식은 애플리케이션의 특정 요구 사항에 따라 다릅니다. 입력 매개변수가 크게 다를 경우 모드 매개변수나 여러 기능을 사용해야 할 수도 있습니다. 그러나 입력 매개변수가 일관적인 경우 기본값을 사용하는 것이 더 간단하고 효율적인 솔루션을 제공할 수 있습니다.
위 내용은 PostgreSQL 함수에서 가변 입력 매개변수를 효율적으로 처리하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!