ホームページ >データベース >mysql チュートリアル >「エラー: 関数 ... が存在しません」エラーが発生するのはなぜですか? 関数呼び出しの型の不一致を修正するにはどうすればよいですか?
エラーの理解: 「エラー: 関数 ... が存在しません。ヒント: 指定された名前と引数の型に一致する関数はありません」
関数を実行しようとするときは、指定された関数名と引数の型が実際の関数定義と一致していることを確認することが重要です。不一致がある場合は、「エラー: 関数 ... が存在しません。ヒント: 指定された名前と引数の型に一致する関数はありません。」というエラーが発生する可能性があります。
解決策: 引数の型を調べる
この特定のシナリオでは、エラーは関数定義内の "smallint" パラメーターの型の不一致に関連しています。ただし、関数呼び出しでは、「整数」型であると推定される数値リテラルを使用しています。
数値リテラルについて
文字列リテラル (次のような) '123') は最初は型指定されておらず、その値が割り当てられるか明示的にキャストされるまでは型指定されません。ただし、数値リテラル (123 など) は、許容範囲内に収まる場合はすぐに「整数」として入力され、その範囲を超える場合は「bigint」または「数値」として入力されます。
不一致の解決
問題を解決するには、次の 2 つの方法があります。オプション:
明示的なキャストの追加: 関数呼び出しの「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 中国語 Web サイトの他の関連記事を参照してください。