Postgresql_DB_가이드

함수 호출

구일칠구 2022. 8. 4. 18:49

PostgreSQL 을 사용하면 이름이 지정된 매개변수가 있는 함수를 위치 또는 이름 표기법 을 사용하여 호출할 수 있습니다 . 명명된 표기법은 매개변수와 실제 인수 간의 연결을 보다 명확하고 안정적으로 만들기 때문에 많은 수의 매개변수가 있는 함수에 특히 유용합니다. 위치 표기법에서 함수 호출은 함수 선언에 정의된 것과 동일한 순서로 인수 값으로 작성됩니다. 명명된 표기법에서 인수는 이름별로 함수 매개변수와 일치하며 임의의 순서로 작성할 수 있습니다. 각 표기법에 대해 섹션 10.3 에 설명된 함수 인수 유형의 영향도 고려하십시오 .

두 표기법 모두에서 함수 선언에 제공된 기본값을 갖는 매개변수는 호출에 전혀 기록될 필요가 없습니다. 그러나 이것은 매개변수의 조합을 생략할 수 있기 때문에 명명된 표기법에서 특히 유용합니다. 위치 표기법에서 매개변수는 오른쪽에서 왼쪽으로만 생략할 수 있습니다.

PostgreSQL 은 위치 표기법과 명명 표기법을 결합한 혼합 표기법 도 지원합니다 . 이 경우 위치 매개변수가 먼저 쓰여지고 그 뒤에 명명된 매개변수가 나타납니다.

다음 예제에서는 다음 함수 정의를 사용하여 세 가지 표기법을 모두 사용하는 방법을 보여줍니다.

CREATE FUNCTION concat_lower_or_upper(a 텍스트, b 텍스트, 대문자 부울 DEFAULT false)
텍스트를 반환
같이
$$
케이스 선택
WHEN $3 THEN UPPER($1 || ' ' || $2)
그렇지 않으면 낮음($1 || ' ' || $2)
끝;
$$
LANGUAGE SQL 불변 엄격;

함수 concat_lower_or_upper에는 두 개의 필수 매개변수가 a있으며 b. uppercase또한 기본값이 인 선택적 매개변수가 하나 false있습니다. a및 입력 b연결되어 매개변수에 따라 대문자 또는 소문자로 강제 uppercase설정됩니다. 이 함수 정의의 나머지 세부 사항은 여기에서 중요하지 않습니다( 자세한 내용은 38장 참조 ).

4.3.1. 위치 표기법 사용

위치 표기법은 PostgreSQL 에서 함수에 인수를 전달하는 전통적인 메커니즘입니다 . 예는 다음과 같습니다.

SELECT concat_lower_or_upper('안녕하세요', '세계', 참);
  concat_lower_or_upper
  -----------------------
  헬로월드
  (1줄)
  

모든 인수는 순서대로 지정됩니다. uppercase로 지정 되므로 결과는 대문자 true입니다. 또 다른 예는 다음과 같습니다.

SELECT concat_lower_or_upper('안녕하세요', '세계');
  concat_lower_or_upper
  -----------------------
  안녕하세요 세계
  (1줄)
  

여기에서 uppercase매개변수는 생략되어 기본값인 를 수신하므로 false소문자로 출력됩니다. 위치 표기법에서 인수는 기본값이 있는 한 오른쪽에서 왼쪽으로 생략할 수 있습니다.

4.3.2. 명명된 표기법 사용

명명된 표기법에서 각 인수의 이름은 =>인수 표현식에서 분리하기 위해 사용하여 지정됩니다. 예를 들어:

SELECT concat_lower_or_upper(a => '안녕하세요', b => '세계');
  concat_lower_or_upper
  -----------------------
  안녕하세요 세계
  (1줄)
  

다시 말하지만 인수 uppercase가 생략되어 false암시적으로 설정되었습니다. 명명된 표기법을 사용하는 한 가지 이점은 인수를 임의의 순서로 지정할 수 있다는 것입니다. 예를 들면 다음과 같습니다.

SELECT concat_lower_or_upper(a => '안녕하세요', b => '세계', 대문자 => true);
  concat_lower_or_upper
  -----------------------
  헬로월드
  (1줄)
  
  SELECT concat_lower_or_upper(a => '안녕하세요', 대문자 => true, b => '세계');
  concat_lower_or_upper
  -----------------------
  헬로월드
  (1줄)
  

":="를 기반으로 하는 이전 구문은 이전 버전과의 호환성을 위해 지원됩니다.

SELECT concat_lower_or_upper(a := '안녕하세요', 대문자 := true, b := '세계');
  concat_lower_or_upper
  -----------------------
  헬로월드
  (1줄)
  

4.3.3. 혼합 표기법 사용

혼합 표기법은 위치 표기법과 명명 표기법을 결합합니다. 그러나 이미 언급했듯이 명명된 인수는 위치 인수보다 먼저 올 수 없습니다. 예를 들어:

SELECT concat_lower_or_upper('안녕하세요', '세계', 대문자 => 참);
  concat_lower_or_upper
  -----------------------
  헬로월드
  (1줄)
  

위의 쿼리에서 인수 a및는 b위치적으로 지정되고 while uppercase은 이름으로 지정됩니다. 이 예에서는 문서를 제외하고 거의 추가되지 않습니다. 기본값이 있는 수많은 매개변수를 포함하는 보다 복잡한 함수에서 명명되거나 혼합된 표기법은 많은 쓰기 작업을 절약하고 오류 가능성을 줄일 수 있습니다.

메모

명명 및 혼합 호출 표기법은 현재 집계 함수를 호출할 때 사용할 수 없습니다(하지만 집계 함수가 창 함수로 사용될 때 작동함).

'Postgresql_DB_가이드' 카테고리의 다른 글

기본값  (0) 2022.08.05
데이터 정의  (0) 2022.08.04
유형 캐스트  (0) 2022.07.18
창 함수 호출  (0) 2022.07.18
연산자 호출  (0) 2022.07.18