같은 SQL 이름으로 둘 이상의 함수가 정의될 수 있습니다. 그들이 취하는 주장이 다른 한. 즉, 함수 이름은 다음과 같습니다.과부하됨. 언제 쿼리가 실행되면 서버는 어떤 토토을 수행할지 결정합니다. 제공된 데이터 유형 및 번호에서 호출 인수. 오버로딩을 사용하여 함수를 시뮬레이션할 수도 있습니다. 유한한 최대값까지 가변 개수의 인수 사용 번호.
함수는 속성과 동일한 이름을 가질 수도 있습니다. 에서 콤플렉스의 함수 간에 모호성이 있는 경우 유형 및 복합 유형의 속성을 사용하면 해당 속성은 항상 사용됩니다.
오버로드된 함수 계열을 생성할 때 다음 중 하나를 수행해야 합니다. 모호함이 생기지 않도록 주의하세요. 예를 들어, 주어진 기능
CREATE FUNCTION 테스트(int, real) 반환 ... CREATE FUNCTION 테스트(smallint, 배정밀도) RETURNS ...
어떤 함수가 호출될지는 즉시 명확하지 않습니다 다음과 같은 사소한 입력으로테스트(1, 1.5). 현재 구현된 해결 규칙은 다음과 같습니다. 에 설명되어 있습니다.사용자 가이드하지만 그렇죠 이에 미묘하게 의존하는 시스템을 설계하는 것은 현명하지 않습니다. 행동.
C 언어 함수를 오버로드할 때 추가 사항이 있습니다 제약 조건: 계열에 있는 각 함수의 C 이름 오버로드된 함수는 모든 함수의 C 이름과 달라야 합니다. 내부 또는 동적으로 로드되는 기타 토토. 만약 이 규칙을 위반하면 동작이 이식 가능하지 않습니다. 당신은 런타임 링커 오류가 발생하거나 함수 중 하나가 호출됩니다. (보통 내부). 의 대체 형식ASSQL에 대한 절함수 생성명령은 SQL 함수를 분리합니다 C 소스 코드의 함수 이름에서 가져온 이름입니다. 예:
CREATE FUNCTION 테스트(int) RETURNS int
    그대로 '파일 이름', 'test_1arg'
    언어 C;
CREATE FUNCTION test(int, int) 반환 int
    그대로 '파일 이름', 'test_2arg'
    언어 C;
  여기에 있는 C 함수의 이름은 가능한 많은 것 중 하나를 반영합니다. 규칙.
이전PostgreSQL7.0, 이 대체 구문이 존재하지 않았습니다. 돌아다닐 수 있는 비결이 있어요 문제는 서로 다른 C 함수 세트를 정의함으로써 발생합니다. 이름을 지정한 다음 동일한 이름의 SQL 함수 세트를 정의합니다. 적절한 인수 유형을 취하고 다음을 호출하는 래퍼 C 함수와 일치합니다.