> 데이터 베이스 > MySQL 튜토리얼 > 기본값은 어떻게 가변 입력 매개변수에 대한 PostgreSQL 함수 설계를 향상시킬 수 있습니까?

기본값은 어떻게 가변 입력 매개변수에 대한 PostgreSQL 함수 설계를 향상시킬 수 있습니까?

Patricia Arquette
풀어 주다: 2024-12-25 03:37:23
원래의
511명이 탐색했습니다.

How Can Default Values Improve PostgreSQL Function Design for Variable Input Parameters?

가변 입력 매개변수를 사용하는 함수

PostgreSQL에서 저장 프로시저(함수)를 생성할 때 입력을 기반으로 테이블 업데이트를 처리해야 합니다. 매개변수. 가변 입력 매개변수를 수용하기 위한 한 가지 접근 방식은 모드 매개변수를 도입하는 것입니다. 이 모드 매개변수는 업데이트 쿼리에 사용할 특정 매개변수를 제어합니다.

그러나 다른 접근 방식은 함수 매개변수에 기본값을 사용하는 것입니다.

기본값

함수 매개변수의 기본값을 정의하면 함수를 단순화하고 코드 가독성을 높일 수 있습니다. 다음 예를 고려하십시오.

CREATE OR REPLACE FUNCTION update_site(_name text, _city text DEFAULT NULL, _telephone int DEFAULT NULL)
RETURNS int
LANGUAGE plpgsql AS
$func$
BEGIN
   IF _city IS NULL AND _telephone IS NULL THEN
      RAISE WARNING 'At least one not-null input value required!';
      RETURN;  -- nothing to update
   END IF;

   UPDATE "Sites"
   SET    "City"      = COALESCE(_city, "City")
        , "Telephone" = COALESCE(_telephone, "Telephone")
   WHERE  "SiteName"  = _name;
END
$func$;
로그인 후 복사

기본값의 장점:

  • 함수 코드 단순화: 복잡한 CASE 문이 필요하지 않습니다. 또는 모드 매개변수를 기반으로 하는 조건부 논리.
  • 피합니다. 이름 충돌: 입력 매개변수에 밑줄 접두사를 사용하면 열 이름과의 충돌을 방지할 수 있습니다.
  • 가독성 향상: 더 명확하고 직관적인 함수 논리.

사용법:

이 업데이트된 기능은 다음과 같습니다. 다양한 호출 표기법과 함께 사용:

  • 위치 표기법:
SELECT update_site('foo', 'New York');  -- no telephone
로그인 후 복사
  • 이름 지정 표기법:
SELECT update_site(name => 'foo', _telephone => 123);  -- no city
로그인 후 복사
  • 혼합 표기법:
SELECT update_site('foo', _telephone => 123);  -- still no city
로그인 후 복사

효율성

모드 매개변수 또는 기본값을 사용하는 두 가지 접근 방식 값은 간단한 업데이트 작업에 효율적일 수 있습니다. 그러나 더 복잡한 시나리오의 경우 기본값이 더 명확하고 유지 관리하기 쉬운 솔루션을 제공할 수 있습니다.

접근 방식 선택

특정 요구 사항에 적합한 최선의 선택입니다. 열이 NOT NULL로 정의된 경우 기본값은 더 간단하고 빠른 접근 방식을 제공합니다. 다양한 출력이 포함된 SELECT 쿼리와 관련된 보다 복잡한 시나리오의 경우 VARIADIC 또는 다형성 입력 유형과 동적 SQL을 사용하는 것이 좋습니다.

위 내용은 기본값은 어떻게 가변 입력 매개변수에 대한 PostgreSQL 함수 설계를 향상시킬 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿