例如,报从字符串换为datetime时发生语法错误。出现这样的问题,可以打开BizMonitor来监控,会看到发到服务端的SQL语句。
例如,
在平台中定义SQL语句如下:
SELECT SJJ_WZKCB.YXRQ, SJJ_WZKCB.KF, SJJ_WZKCB.WPBM, SJJ_WZKCB.GGXH
FROM SJJ_WZKCB
WHERE SJJ_WZKCB.YXRQ = :&[Biz:\SYSTEM\DataTimeParams.ParamGroup\ServerDate.Param]
且参数的值:='2004-5-27 17:28:10' and CPU= 'P4'
而通过BizMonitor看到发到服务端的SQL语句确是:
SELECT SJJ_WZKCB.YXRQ, SJJ_WZKCB.KF, SJJ_WZKCB.WPBM, SJJ_WZKCB.GGXH
FROM SJJ_WZKCB
WHERE SJJ_WZKCB.YXRQ = :_2929B3D70935458FA13847014A2ABAE7
从SQL语句可以看到,发到服务端的是一个值,不是一个表达式,因而跟字段类型没有必然关系。数据库接受到SQL语句后,开始解析,当解析到等号(=),发现后面是一个参数,那么就去找参数的值,发现参数的值为''2004-5-27 17:28:10' and CPU= 'P4',不是一个日期型的格式,所以就报:从字符串换为datetime时发生语法错误.
解决方法是,不能这样写SQL语句,应该把表达式拼写到SQL语句中。 |