집 >데이터 베이스 >MySQL 튜토리얼 >'오류: 함수 ... 존재하지 않습니다.' 오류가 발생하는 이유는 무엇이며 함수 호출에서 유형 불일치를 해결하려면 어떻게 해야 합니까?
오류 이해: "오류: 함수 ...가 존재하지 않으며 힌트: 지정된 이름 및 인수 유형과 일치하는 함수가 없습니다."
함수를 실행하려고 할 때 지정된 함수 이름과 인수 유형이 실제 함수 정의와 일치하는지 확인하는 것이 중요합니다. 불일치가 있는 경우 "오류: 함수 ...가 존재하지 않으며 힌트: 지정된 이름 및 인수 유형과 일치하는 함수가 없습니다."라는 오류가 발생할 수 있습니다.
해결책: 인수 유형 검사
이 특정 시나리오에서 오류는 함수 정의의 "smallint" 매개변수에 대한 유형 불일치와 관련이 있습니다. 그러나 함수 호출에서는 "정수" 유형으로 추정되는 숫자 리터럴을 사용하고 있습니다.
숫자 리터럴 이해
문자열 리터럴(예: '123')은 처음에는 유형이 지정되지 않았으며 해당 값이 할당되거나 명시적으로 캐스팅될 때까지 그대로 유지됩니다. 그러나 숫자 리터럴(예: 123)은 허용 범위 내에 있으면 즉시 "정수"로 입력되고 해당 범위를 초과하면 "bigint" 또는 "숫자"로 즉시 입력됩니다.
불일치 해결
문제를 해결하려면 두 가지 방법이 있습니다. 옵션:
명시적 형변환 추가: 함수 호출에서 "smallint" 매개변수에 대한 명시적 형변환 추가:
SELECT FnUpdateSalegtab09 (4, 1, 0, 12, 1, '9'::varchar,'2014-07-15'::timestamp, 4048, '9'::varchar, 4048, 'MYCUSTOMER'::varchar, 12::money, 0, 0::money, 0.32, 185, 0, '2014-07-15 11:24:12 AM'::timestamp, 0, 0::money, 0, 0::money, 0::money, 0, 0::money, 0, 0::money, 0, 0::money, ''::varchar, 0::money, False, ''::varchar, '2014-07-15'::timestamp, ''::varchar, ''::varchar, False, ''::varchar, ''::varchar, 1, ''::varchar, 1,0,1,0,42)
유형화되지 않은 리터럴 전달: 인용된 전달(유형화되지 않음) "smallint" 매개변수에 대한 리터럴:
SELECT FnUpdateSalegtab09 (4, 1, 0, 12, 1, '9'::varchar,'2014-07-15'::timestamp, 4048, '9'::varchar, 4048, 'MYCUSTOMER'::varchar, 12::money, 0, 0::money, 0.32, 185, 0, '2014-07-15 11:24:12 AM'::timestamp, 0, 0::money, 0, 0::money, 0::money, 0, 0::money, 0, 0::money, 0, 0::money, ''::varchar, 0::money, False, ''::varchar, '2014-07-15'::timestamp, ''::varchar, ''::varchar, False, ''::varchar, ''::varchar, 1, ''::varchar, 1, '0', '1', '0', 42)
위 내용은 '오류: 함수 ... 존재하지 않습니다.' 오류가 발생하는 이유는 무엇이며 함수 호출에서 유형 불일치를 해결하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!