存储过程中数据类型转换的小问题,请大侠赐教
declare @ChrFintid nvarchar(4000) ; --声明变量
set @ChrFintid=(select ChrFintid from serpjdjs where IntID=@IntID) --取得变量字符串值,其格式为 1,2,3,4
update serverkk set Intstatus='2' where intid in (@ChrFintid) --这个语句报错,将 nvarchar 值 '1,2,3,4' 转换为数据类型为 int 的列时发生语法错误。
请问怎么解决SQL server将intid 为整型的隐含转换了?需要怎么变通处理了?谢谢
问题点数:20、回复次数:4Top
1 楼lzhs(快乐至上)回复于 2006-03-11 09:56:58 得分 5
将intid列先显式转换为Varchar类型...
Where Convert(varchar(X),intid) in...
Top
2 楼xeqtr1982(Visual C# .NET)回复于 2006-03-11 10:13:10 得分 15
declare @ChrFintid nvarchar(4000) --声明变量
set @ChrFintid=(select ChrFintid from serpjdjs where IntID=@IntID) --取得变量字符串值,其格式为 1,2,3,4
exec('update serverkk set Intstatus=''2'' where intid in('+@ChrFintid+')')
--试试行不Top
3 楼xiazf(Tony)回复于 2006-03-11 10:40:46 得分 0
2位的方法语法可以通过,但不会执行该语句,数据没有修改。Top
4 楼xiazf(Tony)回复于 2006-03-11 11:15:36 得分 0
根据xeqtr1982(ShaKa) 的方法,我采用如下语句则可以
declare @ChrFintid nvarchar declare
declare @ChrFexe nvarchar(4000) ; -- 执行语句
set @ChrFexe='update serverkk set Intstatus=''2'' where intid in ('+@ChrFintid+')'
exec (@ChrFexe)
再次感谢两位。Top
相关问题
- 执行存储过程,数据类型 numeric 转换为 decimal 时出错
- 运行存储过程时 将数据类型 varchar 转换为 float 时出错
- 调用存储过程出错 将数据类型 nvarchar 转换为 int 时出错。 100分!!!!!
- 存储过程:从字符串转换为 smalldatetime 数据类型时发生语法错误。
- 这条存储过程为什么提示将字符串转换为 smalldatetime 数据类型时失败
- 关于存储过程的类型转换 急求!
- 存储过程中如何进行数据转换并计算
- ???[求助]SQL存储过程输入参数的数据类型???
- 请教----存储过程中数据类型的问题
- 存储过程类型数据窗口调用ORACLE8.1中存储过程返回的记录集(加100分)




