0

クエリでエラーが発生しているフィールドを見つける方法:

com.abc.fast.common.db.exception.UncategorizedSQLException: CallableStatementCallback; SQL [{call p_proc_u(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)}]; [エラー コード: 257; SQLState: 42000; メッセージ: データ型 'VARCHAR' から 'NUMERIC' への暗黙的な変換は許可されていません。CONVERT 関数を使用して、このクエリを実行します。(データソース: 1、タイプ: SYBASE)]; ネストされた例外は com.sybase.jdbc3.jdbc.SybSQLException: データ型 'VARCHAR' から 'NUMERIC' への暗黙の変換は許可されていません。CONVERT 関数を使用して、このクエリを実行します。

4

3 に答える 3

0

Spring のストアド プロシージャ テンプレートを使用してこれが発生している場合は、「declareParameter」の順序が、宛先ストアド プロシージャで指定されているパラメータ リストと同じ順序であることを確認してください。

次のようなストアド プロシージャがあるとします。

CREATE PROCEDURE dbo.sp_ac_createStoredProc

(
    @pFirst_name  VARCHAR(100),
    @pLast_name   VARCHAR(100)  = NULL,
    @pAge         NUMERIC(2,0) = NULL

このようにパラメータを宣言します

declareParameter(new SqlParameter(FIRST_NAME, Types.VARCHAR));
declareParameter(new SqlParameter(LAST_NAME,  Types.VARCHAR));
declareParameter(new SqlParameter(AGE,        Types.NUMERIC));

そしてそれは大丈夫です。次のようにパラメータを宣言します。

declareParameter(new SqlParameter(AGE,        Types.NUMERIC));
declareParameter(new SqlParameter(FIRST_NAME, Types.VARCHAR));
declareParameter(new SqlParameter(LAST_NAME,  Types.VARCHAR));

まあ、基本的にはしないでください。

于 2013-09-12T16:46:59.517 に答える
0

これは、数値が引用符で囲まれていること、または文字値に引用符がないことを示しています。

コードを再確認して、値がデータベースに正しく渡されていることを確認してください。

于 2013-06-26T14:03:19.190 に答える