关于sql条件语句where id in (@参数)执行报错问题(转换成数据类型 int 时失败)(
来源:互联网 发布:网络电视机顶盒那种好 编辑:程序博客网 时间:2024/05/07 20:36
有执行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 时失败。
如下面这个存储过程:
alter proc Web_gettwtwgoldgameserverGol
@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_gettwtwgoldgameserverGol
在将 varchar 值 '+@twgoldsellID+' 转换成数据类型 int 时失败。
- 关于sql条件语句where id in (@参数)执行报错问题(转换成数据类型 int 时失败)(
- 关于sql where id in 转换成数据类型 int 时失败
- 关于sql where id in 转换成数据类型 int 时失败
- 关于sql where id in 转换成数据类型 int 时失败
- 关于sql where id in 转换成数据类型 int 时失败
- where in (@参数) 转换成数据类型 int 时失败
- 在将 varchar 值 'select * from soft where id=' 转换成数据类型 int 时失败
- sql cast 转换成数据类型 int 时失败
- Sql 在将varchar值 '21,123,.. ' 转换成数据类型 int 时失败 的问题
- Sql 在将varchar值 '1,2,.. ' 转换成数据类型 int 时失败 的问题
- SQL SERVER 在将 nvarchar 值转换成数据类型 int 时失败
- sql 在将 nvarchar 值 转换成数据类型 int 时失败。
- 编写存储过程时,出现“转换成数据类型 int 时失败”错误的解决方法
- varchar 值 '2123,2385,4516' 转换成数据类型 int 时失败
- 在将 varchar 值 ',' 转换成数据类型 int 时失败。
- 在将nvarchar值转换成数据类型int时失败
- 在将 varchar 值 'System.Web.UI.WebControls.DataKey' 转换成数据类型 int 时失败。
- 在将 varchar 值 'system.web.ui.webcontrols.todayq 转换成数据类型 int 时失败。
- Android开发基础:Android源代码结构解析
- 各种卡类说明
- 基于WSP/WTP的MMS传输——MMS 传输
- 谁说美女不编程
- 普通二叉排序树
- 关于sql条件语句where id in (@参数)执行报错问题(转换成数据类型 int 时失败)(
- 基于WSP/WTP的MMS传输(2)——MMS PDU结构
- 添加的SWT控件没有显示出来
- Mafire1 S50与S70区别
- 有用的MeeGo链接
- 14443-A 与14443-B区别
- ArcGIS 10.0 地图数据与图层数据打包(用好此功能受益不浅)
- linux 常用命令及技巧
- 基于WSP/WTP的MMS传输(3)——WTP协议的实现