我们都知道在进行Delete,Update对多行记录操作时会用到“IN”关键字
例如:DELETE table_name WHERE id IN (value1,value2,value3,value4)
所以我们需要处理value1,value2,value3,value4型的数据
也许很多人会出现选中一条记录时可以完成操作,但当选中多条记录时 会出现数据类型不对的错误
我感觉可能是Delete,Update的语句进行了默认的数据类型转换导致了错误
我的方法是自己拼装一个sql语句,用exec执行之
另一个可能导致错误的地方是: 没有正确处理value1,value2,value3,value4型数据
具体的说: 1. 转换后 数据 变成了 这个样子 value1','value2','value3','value4
2. 转换后 数据 变成了 这个样子 'value1,value2,value3,value4'
我的方法是 用单引号转义符 '' (二个单引号连写) 和 replace (字符串替换函数)
ALTER PROCEDURE [dbo].[Modify_Book_By_Category]
@Ids VARCHAR(100),
@CategoryId INT
AS
BEGIN
SET NOCOUNT ON;
declare @sql VARCHAR(max)
set @sql =
'
UPDATE [BookShop].[dbo].[Books]
SET
[CategoryId] = '+CONVERT(varchar(50),@CategoryId)+'
WHERE [Id] IN ('''+replace(@Ids,',',''',''')+''')
'
--print @sql
EXEC(@sql)
END