有执行sql条件语句where id in(@参数)的时候,如果处理不当,就会出现问题:
如下面这个存储过程:alter proc Web_gettwtwgoldgameserverGoldSell
@ID int
as
declare @twgoldsellID nvarchar(1000)
select @twgoldsellID=twgoldsellID from twgoldgameserver where ID=@ID
set @twgoldsellID=replace(@twgoldsellID,"|",",")
set @twgoldsellID=left(@twgoldsellID,len(@twgoldsellID)-1)
select * from twgoldsell where ID in (@twgoldsellID)我们看上去好像没有什么问题,却在执行的时候报错:消息 245,级别 16,状态 1,第 1 行
在将 varchar 值 "813,1160,1219,1227,1232" 转换成数据类型 int 时失败。其实此条语句在执行时,
select * from twgoldsell where ID in (@twgoldsellID)
执行的语句是:select * from twgoldsell where ID in ("813,1160,1219,1227,1232")
这样执行当然出错,因为@twgoldsellID是一个字符串,现在是以参数的形式传递。解决办法:
select * from twgoldsell where ID in (@twgoldsellID)
改为:
exec("select * from twgoldsell where ID in ("+@twgoldsellID+")")记住:一定要加exec执行函数,不然会报如下错误:
消息 245,级别 16,状态 1,过程 Web_gettwtwgoldgameserverGoldSell,第 8 行
在将 varchar 值 "+@twgoldsellID+" 转换成数据类型 int 时失败。SqlServer表分区SQL Server 2005 海量数据解决方案(分区表)与对已存在的表进行分区相关资讯 SQL语句 sql 转换int sql varchar转换int
- 如何定位SQL语句在共享池里用到了 (03月17日)
- Java 注解入门 自动生成SQL语句 (07/28/2015 16:08:34)
- Oracle 通过sql profile为sql语句 (05/03/2015 19:43:07)
| - MySQL 存储过程动态执行sql语句 (10/13/2015 19:10:08)
- 画图解释 SQL join 语句 (07/17/2015 15:16:27)
- MySQL数据库sql语句调优 (03/21/2015 17:42:45)
|
本文评论 查看全部评论 (0)