在Delphi7.0编译的客户端下执行同一操作却出现不同结果的奇怪现象。
系统是一个三层结构在客户端调用中间层的存储过程,同是一个操作,却有着不同的结果,
第一次正常显示,第二次却显示'之前有未闭合的引号',从跟踪器的跟踪的结果发现如下:
第一次:exec sp_Pub_ItemList 'Test', '', '', N' and isnull(ItemName, '''') like ''%亲切%'''
第二次:exec sp_Pub_ItemList 'Test', '', '', ' and isnull(ItemName, '''') like ''%亲切结果发现第二次运行的结果在分析器里比第一次的结果后面少了(%''')这及个字符,分析原因在Delphi7.0下会保存第一次参数执行的结果的长度来执行以后同一操作。而第一次执行的结果把中文当做一个字符来处理,大家发现没有有个大写的N,接下来却又把中文当做两个字符来处理,所以才导致结果出错,请问各位有没有遇到类似的情况,应怎么解决。
系统是一个三层结构在客户端调用中间层的存储过程,同是一个操作,却有着不同的结果,
第一次正常显示,第二次却显示'之前有未闭合的引号',从跟踪器的跟踪的结果发现如下:
第一次:exec sp_Pub_ItemList 'Test', '', '', N' and isnull(ItemName, '''') like ''%亲切%'''
第二次:exec sp_Pub_ItemList 'Test', '', '', ' and isnull(ItemName, '''') like ''%亲切结果发现第二次运行的结果在分析器里比第一次的结果后面少了(%''')这及个字符,分析原因在Delphi7.0下会保存第一次参数执行的结果的长度来执行以后同一操作。而第一次执行的结果把中文当做一个字符来处理,大家发现没有有个大写的N,接下来却又把中文当做两个字符来处理,所以才导致结果出错,请问各位有没有遇到类似的情况,应怎么解决。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货