37.6. 토토 꽁 머니 오버로딩

두 개 이상의 함수를 동일한 SQL 이름으로 정의할 수 있습니다. 단, 인수가 다른 경우에 한합니다. 즉, 함수 이름은 다음과 같습니다.오버로드. 사용 여부에 관계없이 이 토토 꽁 머니은 일부 사용자가 다른 사용자를 신뢰하지 않는 데이터베이스에서 함수를 호출할 때 보안 예방 조치를 수반합니다. 참조메이저 토토 사이트 42 |_1 |04. 쿼리가 실행되면 서버는 제공된 인수의 수와 데이터 유형에서 호출할 토토 꽁 머니를 결정합니다. 오버로딩은 최대 유한 개수까지 가변 개수의 인수를 사용하여 토토 꽁 머니를 시뮬레이션하는 데에도 사용할 수 있습니다.

오버로드된 함수군을 생성할 때 모호함을 만들지 않도록 주의해야 합니다. 예를 들어, 주어진 함수는 다음과 같습니다:

CREATE FUNCTION 테스트(int, real) 반환...
CREATE FUNCTION 테스트(smallint, 배정밀도) RETURNS ...

다음과 같은 사소한 입력으로 어떤 함수가 호출될지는 즉시 명확하지 않습니다.테스트(1, 1.5). 현재 구현된 해결 규칙은 다음 항목에 설명되어 있습니다.PostgreSQL : 문서 : 13 : 장 10 장 토토 사이트 추천, 하지만 이 동작에 미묘하게 의존하는 시스템을 설계하는 것은 현명하지 않습니다.

복합 유형의 단일 인수를 취하는 토토 꽁 머니는 일반적으로 해당 유형의 속성(필드)과 동일한 이름을 가져서는 안 됩니다. 그것을 기억해내세요속성(테이블)다음과 동등한 것으로 간주됩니다.테이블.속성. 복합 유형의 함수와 복합 유형의 속성 사이에 모호성이 있는 경우 해당 속성이 항상 사용됩니다. 함수 이름을 스키마로 한정하여 해당 선택을 재정의할 수 있습니다(즉,스키마.펑크(테이블)) 하지만 충돌하는 이름을 선택하지 않음으로써 문제를 피하는 것이 더 좋습니다.

또 다른 가능한 충돌은 가변 토토 꽁 머니와 비 가변 토토 꽁 머니 사이에 있습니다. 예를 들어, 둘 다 생성하는 것이 가능합니다.foo(숫자)그리고foo(VARIADIC 숫자[]). 이 경우 다음과 같은 단일 숫자 인수를 제공하는 호출에 어느 것이 일치해야 하는지 불분명합니다.foo(10.1). 규칙은 검색 경로에서 먼저 나타나는 함수가 사용되거나 두 함수가 동일한 스키마에 있는 경우 가변적이지 않은 함수가 선호된다는 것입니다.

C 언어 함수를 오버로드할 때 추가 제약 조건이 있습니다. 오버로드된 함수 계열에 있는 각 함수의 C 이름은 내부 또는 동적으로 로드된 다른 모든 함수의 C 이름과 달라야 합니다. 이 규칙을 위반하면 해당 동작은 이식 가능하지 않습니다. 런타임 링커 오류가 발생하거나 함수 중 하나가 호출됩니다(일반적으로 내부 함수). 의 대체 형식ASSQL에 대한 절토토 꽁 머니 생성명령은 C 소스 코드의 함수 이름에서 SQL 함수 이름을 분리합니다. 예를 들어:

CREATE FUNCTION 테스트(int) RETURNS int
    그대로 '파일 이름', 'test_1arg'
    언어 C;
CREATE FUNCTION test(int, int) 반환 int
    그대로 '파일 이름', 'test_2arg'
    언어 C;

여기서 C 토토 꽁 머니의 이름은 가능한 많은 규칙 중 하나를 반영합니다.

수정사항 제출

문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.