인수 기능 유형은 다음에 따라 해결됩니다. 다음 단계.
와이즈 토토 인수 유형 해상도
에서 고려할 함수를 선택하십시오PG_PROC
시스템 카탈로그. 만약에
자격이없는 함수 이름이 사용됩니다
올바른 이름과 인수 계수의 고려
현재 검색 경로에서 볼 수 있습니다 (참조섹션 2.8.3). 만약에
자격을 갖춘 와이즈 토토 이름이 주어졌으며
지정된 스키마가 고려됩니다.
검색 경로에서 여러 와이즈 토토을 찾는 경우 동일한 인수 유형 만 나타나는 것만 나타납니다 경로에서 가장 빠른 것이 고려됩니다. 그러나 와이즈 토토 다른 인수 유형은 동일하게 고려됩니다 검색 경로 위치에 관계없이 기초.
입력을 정확하게 수락하는 함수를 확인하십시오 인수 유형. 하나가 존재하는 경우 (정확한 하나만있을 수 있습니다 고려 된 함수 세트에서 일치) 사용하십시오. (케이스 관련알 수없는a 이 단계에서 일치합니다.)
정확히 일치하지 않으면 와이즈 토토이 있는지 확인하십시오. 호출은 사소한 유형 강요 요청으로 보입니다. 이것 함수 호출에 단 하나의 인수가 있고 함수 이름은 일부의 (내부) 이름과 동일합니다. 데이터 유형. 또한 와이즈 토토 인수는해야합니다 알려지지 않은 문자 그대로 또는 유형입니다 이름이 지정된 데이터 유형과 이진과 호환됩니다. 이런 경우 조건이 충족되고 와이즈 토토 인수는 명시적인 와이즈 토토 호출없이 이름이 지정된 데이터 유형.
최고의 경기를 찾으십시오.
입력의 후보 함수 폐기 유형은 일치하지 않으며 강요 할 수 없습니다 ( 암시 적 강요 함수) 일치하는 것.알 수없는리터럴이 가정됩니다 이 목적을 위해 무엇이든 강요 할 수 있습니다. 단지 하나라면 후보자는 남아있다. 그렇지 않으면 다음으로 계속됩니다 단계.
모든 후보자를 통해 실행하고 그와 함께 보관하십시오 입력 유형에서 가장 정확한 일치. 모든 후보자를 유지하십시오 정확히 일치하는 사람이없는 경우. 한 후보자 만 있다면 남아 있습니다. 그렇지 않으면 다음 단계로 계속됩니다.
모든 후보자를 통해 그와 함께 보관하십시오 입력 유형에서 가장 정확하거나 이진 호환 일치. 정확한 또는 정확한 사람이없는 경우 모든 후보자를 유지하십시오 이진 호환 일치. 한 후보자 만 있다면 남아 있습니다. 그렇지 않으면 다음 단계로 계속됩니다.
모든 후보자를 통해 실행하여 그를 유지하십시오 유형의 대부분의 위치에서 선호되는 유형을 허용합니다 강요가 필요합니다. 모든 후보자를 보관하십시오 선호하는 유형을 허용합니다. 한 후보 만 남아있는 경우 그것을 사용하십시오; 그렇지 않으면 다음 단계로 계속됩니다.
입력 인수가있는 경우알 수없는, 허용 된 유형 범주를 확인하십시오 그 논쟁에서 나머지는 위치에 있습니다 후보자. 각 위치에서를 선택하십시오.String카테고리 후보자가 수락하는 경우 해당 범주 (문자열에 대한이 편견은 적절합니다 알려지지 않은 문자가 문자열처럼 보이므로). 그렇지 않으면 나머지 후보자가 모두 수락하는 경우 동일한 유형 카테고리, 해당 범주를 선택하십시오. 그렇지 않으면 올바른 선택은 추론 할 수 없기 때문에 실패합니다 더 많은 단서없이. 또한 응시자는 다음에 선호되는 데이터 유형을 수락합니다 선택된 카테고리. 이제 그렇지 않은 후보자를 버립니다 선택한 유형 범주를 수락하십시오. 또한 후보는 주어진 인수에서 선호 유형을 수락합니다 입장, 선호되지 않은 수락 후보자를 버립니다 그 주장에 대한 유형.
한 후보 만 남아 있으면 사용하십시오. 아니오 그러므로 후보 또는 두 명 이상의 후보가 남아 있습니다 실패하다.
예 7-4. 요인 와이즈 토토 인수 유형 해결
하나만 있습니다int4fac
함수에 정의 된 함수PG_PROC
카탈로그. 따라서 다음 쿼리는 자동으로int2논쟁int4:
tgr = int4fac (int2 '4'); int4fac ------- 24 (1 행)
실제로 파서에 의해로 변환됩니다.
TGL = int4fac (int4 (int2 '4')); int4fac ------- 24 (1 행)
예 7-5. 서브 스트링 함수 유형 해결
두 개가 있습니다Substr
와이즈 토토
선언PG_PROC
. 하지만,
하나만 유형에 대한 두 가지 주장을 취합니다텍스트andint4.
지정되지 않은 유형의 문자열 상수로 호출되면 유형은 유일한 후보 와이즈 토토과 직접 일치합니다. 유형:
TGL = SELECT SUBSTR ( '1234', 3); 기판 -------- 34 (1 행)
문자열이 유형으로 선언 된 경우Varchar테이블, 그러면 파서는 그것을 강요하려고 노력할 것입니다텍스트:
TGL = SELECT SUBSTR (Varchar '1234', 3); 기판 -------- 34 (1 행)
파서에 의해 변환
TGL = select substr (text (varchar '1234'), 3); 기판 -------- 34 (1 행)
참고 :실제로, 파서는 그것을 알고 있습니다텍스트andVarcharare이진 호환, 하나가 될 수 있음을 의미합니다 하지 않고 상대방을 받아들이는 와이즈 토토으로 전달 물리적 전환. 따라서 명시적인 유형이 없습니다 이 경우 전환 호출이 실제로 삽입됩니다.
int4, 파서는이를로 변환하려고합니다.텍스트:
TGL = SELECT SUBSTR (1234, 3); 기판 -------- 34 (1 행)
실제로 |
TGL = SELECT SUBSTR (Text (1234), 3); 기판 -------- 34 (1 행)
이것은 변환 기능이 있기 때문에 성공합니다 시스템 카탈로그에서 텍스트 (int4)