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