SQL Server中存储过程中使用IN遇到的问题
来源:互联网 发布:java spring mvc 框架 编辑:程序博客网 时间:2024/06/05 17:37
存储过程传
in
里面的参数的解决办法
两种方法:
1:charindex(
','
+ltrim(列名)+
','
,
','
+@s+
','
)>0 @s传进来的字符变量如31,32,33
2:
exec
(
'@sql'
) 动态执行组合的@sql串
我们都知道在进行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
- SQL Server中存储过程中使用IN遇到的问题
- Sql Server 存储过程解密过程中遇到的问题
- 使用 sql server 2008过程中遇到的一些问题!
- SQL server安装过程中可能遇到的问题
- SQL Server 2005 安装过程中遇到过的问题
- sql server 2005安装过程中遇到的一些问题
- 创建sql server关系图过程中遇到的问题
- SQL SERVER中存储过程参数问题
- sql server存储过程中解决单引号的问题
- SQL SERVER存储过程中使用事务
- SQL SERVER存储过程中使用事务
- SQL Server存储过程中raiserror的使用
- SQL Server学习:存储过程中Cursor(游标)的使用
- 在存储过程中使用事务处理 sql server 删除多表操作一致性的问题
- mysql存储过程中遇到的问题
- mybatis中写sql,使用in()遇到的问题
- sql server中存储过程
- SQL Server 2008存储过程中使用另一个存储过程返回的记录集
- Spring和SpringMVC的区别
- 第4周项目6 多项式求和
- 第七周 项目2-建立链队算法库
- 2015-10-16 【项目5 - 后缀表达式】
- iOS开发UI篇—ios应用数据存储方式(偏好设置)
- SQL Server中存储过程中使用IN遇到的问题
- 几个疑惑的问题
- 【jQuery】3.jquery选择器
- 括号的匹配
- 第三周项目三—求集合并集
- 学生成绩管理系统
- 【第6周 项目5 - 后缀表达式】
- 第六周 后缀表达式
- 第7周 项目4-队列数组