>데이터 베이스 >MySQL 튜토리얼 >'함수 ...가 존재하지 않습니다'라는 메시지와 함께 SQL 함수 호출이 실패하는 이유는 무엇이며 어떻게 해결할 수 있습니까?

'함수 ...가 존재하지 않습니다'라는 메시지와 함께 SQL 함수 호출이 실패하는 이유는 무엇이며 어떻게 해결할 수 있습니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-27 13:03:16762검색

Why Does My SQL Function Call Fail with

"오류: 함수 ...가 존재하지 않으며 힌트: 주어진 이름 및 인수 유형과 일치하는 함수가 없습니다."

제공된 코드에서 시도가 이루어졌습니다. FnUpdateSalegtab09 함수를 호출합니다. 그러나 함수가 존재하지 않거나 해당 인수 유형이 예상한 것과 일치하지 않음을 나타내는 오류가 발생합니다.

오류 메시지는 함수 이름이나 인수 유형이 올바르지 않을 수 있음을 나타냅니다. 가능한 원인을 조사해 보겠습니다.

인수 유형 호환성

FnUpdateSalegtab09의 함수 서명은 해당 매개 변수 중 일부가 smallint 유형임을 지정합니다. 그러나 함수 호출에서 이러한 매개변수는 숫자 리터럴로 전달되며 처음에는 정수 유형으로 추정됩니다.

예상 인수 유형과 실제 유형이 일치하지 않으면 오류가 발생할 수 있습니다.

해결책

이 문제를 해결하려면 숫자 리터럴을 함수에 전달하기 전에 숫자 리터럴을 올바른 유형인 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
);

명시적인 유형 캐스트를 추가하면 인수 유형이 함수의 예상과 일치하는지 확인할 수 있습니다. 정의, 그리고 이제 "함수 ... 존재하지 않습니다." 오류 없이 함수 호출이 실행되어야 합니다.

위 내용은 '함수 ...가 존재하지 않습니다'라는 메시지와 함께 SQL 함수 호출이 실패하는 이유는 무엇이며 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.