하나 이상의 함수가 같은 이름으로 정의 될 수 있습니다. 그들이 맡은 주장이 다르면. 다시 말해서, 함수 이름은과부하. 에이 함수는 속성과 같은 이름을 가질 수 있습니다. 경우 복잡한 유형의 함수 사이에 모호성이 있음 복잡한 유형의 속성, 속성은 항상 사용하십시오.
Postgres7.0, the SQL에 대한 AS 절의 대체 형태함수 만들기명령은 SQL을 분해합니다 C 소스 코드의 함수 이름에서 함수 이름. 이것 이제 기능을 달성하는 데 선호되는 기술입니다 과부하.
c로 작성된 함수의 경우, SQL 이름은함수 만들기정확히이어야합니다 C 코드의 함수의 실제 이름과 동일합니다 (따라서 법적 C 젠 토토 이름이어야합니다).
이 제한에 미묘한 의미가 있습니다 대부분의 운영 체제에서 동적 로딩 루틴이 있습니다 공유 한 수를로드 할 수있게되어 기쁩니다. 상충되는 라이브러리 (동일한 이름) 기능 이름, 그들은 실제로 부하를 징벌 할 수 있습니다. 흥미로운 방법. 예를 들어, a를 정의하는 경우 동일하게 발생하는 동적으로로드 된 함수 Postgres, Dec OSF/1 Dynamic에 내장 된 함수로 이름을 지정합니다. 로더로 인해 Postgres가 기능 자체를 호출하게됩니다 Postgres가 기능을 호출하는 것을 허용하는 대신. 따라서, 기능이 다른 경우 기능을 사용하려면 아키텍처, 우리는 당신이 과부하하지 않는 것이 좋습니다 c 함수 이름.
문제를 해결하기위한 영리한 트릭이 있습니다. 설명. SQL 과부하에 문제가 없으므로 함수는 다른 C 함수 세트를 정의 할 수 있습니다. 이름을 밝히고 이름이 이름이 지정된 SQL 함수 세트를 정의합니다. 적절한 인수 유형을 취하고 전화하는 포장지 일치하는 C 기능.
다른 솔루션은 동적 하중을 사용하는 것이 아니라 기능을 백엔드에 정적으로 연결하고 선언하십시오 내부 기능으로. 그러면 기능에는 모두 있어야합니다 별개의 C 이름이지만 동일한 SQL로 선언 할 수 있습니다. 이름 (물론 인수 유형이 다른 한). 이런 식으로 SQL 래퍼 함수의 오버 헤드를 피합니다. 사용자 정의 백엔드를 준비하는 데 더 많은 노력의 비용 실행 파일. (이 옵션은 버전 6.5에서만 사용할 수 있습니다 나중에 이전 버전에는 내부 기능이 필요하기 때문에 C 코드에서와 SQL에서 동일한 이름을 가지고 있습니다.)