如何查找哪个字段在查询中出错:
com.abc.fast.common.db.exception.UncategorizedSQLException:CallableStatementCallback; SQL [{call p_proc_u(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?, ?)}]; [ErrorCode:257; SQLState:42000;消息:不允许从数据类型“VARCHAR”到“NUMERIC”的隐式转换。使用CONVERT函数运行此查询。 (DataSource:1,Type:SYBASE)];嵌套异常是com.sybase.jdbc3.jdbc.SybSQLException:不允许从数据类型“VARCHAR”到“NUMERIC”的隐式转换。使用CONVERT函数运行此查询。
答案 0 :(得分:0)
这表示数字用引号括起来,或者字符值缺少引号。
仔细检查您的代码,确保将值正确传递到数据库中。
答案 1 :(得分: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));
嗯,基本上,就是不要。