sql 根据多个ID删除表中多行数据
2012-02-27 10:23
106 查看
以下为删除记录的存储过程,此删除为逻辑删除,只是将记录的状态字段state改为'2'了,正常为'1'
以上存储过程调用了下面的存储过程
这样就可以一次性向数据库传递一个字符串id集合对数据进行操作了,这样做可以不用in关键字。
PS:我的淘宝店铺新开业,经营各种桌游,棋牌,希望大伙儿能来看看!http://201314yes.taobao.com/
/* ***************************************************************************** *根据ID删除黑名单表中记录信息 ***************************************************************************** */ CREATE PROCEDURE [dbo].[P_DelBlackListByID_sp] @IDList nvarchar(2000) AS DECLARE @Len int DECLARE @id varchar(30) SELECT @Len = DATALENGTH(@idList) WHILE @Len> 0 BEGIN EXECUTE @Len = GetFirstWordWithSeparator_sp @idList OUTPUT, @id OUTPUT,',' IF @Len > 0 BEGIN update BlackList_tb set [state]='2' WHERE BlackListID=cast(@id as int) END End
以上存储过程调用了下面的存储过程
CREATE PROCEDURE [dbo].[GetFirstWordWithSeparator_sp] @SourceString nvarchar(4000) = NULL OUTPUT, @FirstWord nvarchar(4000) = NULL OUTPUT, @Separator nvarchar(20) AS SET NOCOUNT ON DECLARE @Oldword nvarchar(4000) DECLARE @Length int DECLARE @CommaLocation int SELECT @Oldword = @SourceString IF NOT @Oldword IS NULL BEGIN SELECT @CommaLocation = CHARINDEX(@Separator,@Oldword) SELECT @Length = DATALENGTH(@Oldword) IF @CommaLocation = 0 BEGIN SELECT @FirstWord = @Oldword SELECT @SourceString = NULL RETURN @Length END SELECT @FirstWord = SUBSTRING(@Oldword, 1, @CommaLocation -1) SELECT @SourceString = SUBSTRING(@Oldword, @CommaLocation + LEN(@Separator), @Length - @CommaLocation) RETURN @Length - @CommaLocation END RETURN 0
这样就可以一次性向数据库传递一个字符串id集合对数据进行操作了,这样做可以不用in关键字。
PS:我的淘宝店铺新开业,经营各种桌游,棋牌,希望大伙儿能来看看!http://201314yes.taobao.com/
相关文章推荐
- Oracle 删除重复数据只留一条 查询及删除重复记录的SQL语句 1、查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断 select * from 表 wher
- Oracle 删除重复数据只留一条 查询及删除重复记录的SQL语句 1、查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断 select * from 表 wher
- JS中根据id删除一行数据
- 根据id删除数据,重新绑定数据源
- SQL-根据id合并多行字段数据
- 数据库修改之更新员工表,根据ID删除Mapping表数据,再插入数据
- sql存储过程通过ID删除两表中的数据。
- php实例根据ID删除mysql表中的数据
- 数据库删除之根据ID删除父表中的数据和根据ID删除子表数据
- php实例根据ID删除mysql表中的数据
- SQL语句根据表中的几个字段删除重复数据
- sqlserver 根据一个泛型id查询数据,批量删除数据
- sql查询统计,根据新闻类别ID统计,没有数据显示0
- sql根据一条数据ID取得上一条和下一条的问题
- Sql 根据名称剔除重复数据、根据id返回最新的
- sql根据父id查询子项数据
- 面试时的一道SQL题(查询第30行至40行的数据(其中不可根据id来查,因为id并不一定连续))
- [置顶] Oracle 删除根据id 删除重复数据
- [oracle]删除一张表中重复数据,保留其id字段最小的sql
- 【Maven+SSM】Mybatis动态SQL拼接根据对象删除单条或者多条数据