이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다PostgreSQL : 문서 : 17 : 36.6. 토토 커뮤니티 과부하버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

35.5. 배트맨 토토 과부하

동일한 SQL 이름으로 둘 이상의 함수를 정의 할 수 있습니다. 그들이 맡은 주장이 다르면. 다시 말해서, 함수 이름은과부하. 언제 a 쿼리가 실행되면 서버는 데이터 유형 및 제공된 수의 수에서 호출 논쟁. 과부하를 사용하여 기능을 시뮬레이션 할 수도 있습니다 가변 수의 인수로 최대 최대 최대 숫자.

과부하 된 기능 패밀리를 만들 때 모호성을 만들지 않도록주의하십시오. 예를 들어, 주어진 기능 :

배트맨 토토 테스트 생성 (int, real) 반환 ...
배트맨 토토 테스트 생성 (Smallint, Double Precision) 반환 ...

어떤 배트맨 토토이 호출 될지 즉시 명확하지 않습니다. 와 같은 사소한 입력으로테스트 (1, 1.5). 현재 구현 된 해상도 규칙은 다음과 같습니다 설명토토 결과 : 문서 : 9.2 : 유형 변환이것에 미묘하게 의존하는 시스템을 디자인하는 것은 행동.

복합 유형의 단일 인수를 취하는 함수 일반적으로 어떤 속성 (필드)과 같은 이름을 갖지 않아야합니다. 그 유형의. 그 기억속성 (표)에 해당하는 것으로 간주됩니다.table.attribute. 거기에서 복합 유형의 함수와 복합 유형의 속성, 속성은 항상 사용된. 스키마 자격을 통해 해당 선택을 무시할 수 있습니다 함수 이름 (즉,schema.func (표)) 그러나 피하는 것이 좋습니다 상충되는 이름을 선택하지 않은 문제.

또 다른 가능한 갈등은 변수와 비 바비 니아 사이입니다 배트맨 토토. 예를 들어, 둘 다를 만들 수 있습니다foo (숫자)andfoo (variadic 숫자 []). 이 경우 어느 것이 무엇인지 확실하지 않습니다. 와 같은 단일 숫자 인수를 제공하는 통화와 일치foo (10.1). 규칙은 기능입니다 검색 경로의 앞부분에서 나타나거나 두 사람이 함수는 동일한 스키마에 있으며, 비 변환은 다음과 같습니다. 우선의.

c-language 함수를 과부하 시키면 추가가 있습니다 제약 조건 : 가족의 각 기능의 C 이름 과부하 된 기능은 모두의 C 이름과 달라야합니다. 내부 또는 동적으로로드 된 기타 기능. 이 경우 규칙이 위반되고 행동은 휴대 할 수 없습니다. 당신은 얻을 수 있습니다 런타임 링커 오류 또는 함수 중 하나가 호출됩니다. (보통 내부). 대체 형태의asSQL에 대한 조항함수 만들기명령은 SQL 함수를 분해합니다 C 소스 코드의 함수 이름에서 이름. 을 위한 사례:

배트맨 토토 테스트 생성 (int) int
    처럼 'filename','test_1arg '
    언어 C;
배트맨 토토 테스트를 작성 (int, int) int를 반환합니다
    처럼 'filename','test_2arg '
    언어 C;

여기서 C 함수의 이름은 가능한 많은 것 중 하나를 반영합니다. 컨벤션.