关于主键列执行批量删除单表数据的存储过程,
2014-07-02 11:19
295 查看
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[UP_TY_TXL_XX_Delete_Batch]
--ALTER PROCEDURE [dbo].[UP_TY_TXL_XX_Delete_Batch]
@Keys VARCHAR(8000)
AS
DECLARE @sID NVARCHAR(100),@iPos INT
/*获得 [@Keys] 中第一个英文逗号的位置*/
--set @Keys='194DA3ED-32EB-4983-9F0E-487F741EB147,C372B2EC-D199-41B1-83FC-3A1CB8B0204D'测试用的
SET @iPos=CHARINDEX(',',@Keys)
/*如果长度超出范围,则返回过程*/
IF (LEN(@Keys)>0) --RETURN
if @iPos = 0/*如果是单个记录,后面没有英文逗号执行操作*/
DELETE FROM TY_TXL_XX WHERE U_BH=@Keys
/*如果存在英文逗号*/
else
BEGIN
WHILE 1=1
BEGIN
/*得到第一个英文逗号以左的字符串(不包括英文逗号)*/
SET @sID=LEFT(@Keys,@iPos-1)
/*改变源字符串【去掉第一个英文逗号以左的字符串(包括英文逗号)】*/
SET @Keys=STUFF(@Keys,1,@iPos,'')
/*再次获取新字符串中第一个英文逗号的位置*/
SET @iPos=CHARINDEX(',',@Keys)
/*执行删除语句*/
DELETE FROM TY_TXL_XX WHERE U_BH=@sID
/*如果没有找到英文逗号,则最后一个被截字符串就是 [@Keys]*/
IF(@iPos=0)
BEGIN
/*执行删除语句*/
DELETE FROM TY_TXL_XX WHERE U_BH=@Keys
/*退出循环*/
BREAK
END
END
END
-----测试位置
EXEC [dbo].[UP_TY_TXL_XX_Delete_Batch] '79A5BD18-24AC-430C-868F-B3FC40B152D5,9F4CC6E8-E021-435F-81CF-C86ABDC7A8AD,FDD06B01-DD0B-421F-B94E-CB9147A662E7'
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[UP_TY_TXL_XX_Delete_Batch]
--ALTER PROCEDURE [dbo].[UP_TY_TXL_XX_Delete_Batch]
@Keys VARCHAR(8000)
AS
DECLARE @sID NVARCHAR(100),@iPos INT
/*获得 [@Keys] 中第一个英文逗号的位置*/
--set @Keys='194DA3ED-32EB-4983-9F0E-487F741EB147,C372B2EC-D199-41B1-83FC-3A1CB8B0204D'测试用的
SET @iPos=CHARINDEX(',',@Keys)
/*如果长度超出范围,则返回过程*/
IF (LEN(@Keys)>0) --RETURN
if @iPos = 0/*如果是单个记录,后面没有英文逗号执行操作*/
DELETE FROM TY_TXL_XX WHERE U_BH=@Keys
/*如果存在英文逗号*/
else
BEGIN
WHILE 1=1
BEGIN
/*得到第一个英文逗号以左的字符串(不包括英文逗号)*/
SET @sID=LEFT(@Keys,@iPos-1)
/*改变源字符串【去掉第一个英文逗号以左的字符串(包括英文逗号)】*/
SET @Keys=STUFF(@Keys,1,@iPos,'')
/*再次获取新字符串中第一个英文逗号的位置*/
SET @iPos=CHARINDEX(',',@Keys)
/*执行删除语句*/
DELETE FROM TY_TXL_XX WHERE U_BH=@sID
/*如果没有找到英文逗号,则最后一个被截字符串就是 [@Keys]*/
IF(@iPos=0)
BEGIN
/*执行删除语句*/
DELETE FROM TY_TXL_XX WHERE U_BH=@Keys
/*退出循环*/
BREAK
END
END
END
-----测试位置
EXEC [dbo].[UP_TY_TXL_XX_Delete_Batch] '79A5BD18-24AC-430C-868F-B3FC40B152D5,9F4CC6E8-E021-435F-81CF-C86ABDC7A8AD,FDD06B01-DD0B-421F-B94E-CB9147A662E7'
相关文章推荐
- 存储过程执行删除重复数据、动态执行sql、拼接sql
- 一个关于继承的程序,求高人解释程序执行过程中内存的数据存储情况
- Oracle利用存储过程批量insert造数据和分批提交删除的例子
- .Net下批量删除数据的存储过程问题(用动态SQL )
- 在C#中用最简洁有效的代码执行存储过程并返回数据
- 批量插入数据的存储过程
- 批量插入数据的存储过程
- 关于在存储过程中动态选择数据表名
- 删除数据库的所有存储过程、主键、外键、索引等(转)
- 在C#中用最简洁有效的代码执行存储过程并返回数据
- 数据库操作_连接SQL Server数据库示例;连接ACCESS数据库;连接到 Oracle 数据库示例;SqlCommand 执行SQL命令示例;SqlDataReader 读取数据示例;使用DataAdapter填充数据到DataSet;使用DataTable存储数据库表;将数据库数据填充到 XML 文件;10 使用带输入参数的存储过程;11 使用带输入、输出参数的存储过程示;12 获得数据库中表的数目和名称;13 保存图片到SQL Server数据库示例;14 获得插入记录标识号;Exce
- ORACLE—定时能删除数据的存储过程
- 利用存储过程进行批量数据添加
- 在C#中用最简洁有效的代码执行存储过程并返回数据
- 批量删除存储过程脚本
- MSSQL中批量修改数据表和存储过程的所有者
- 删除数据库的所有存储过程、主键、外键、索引等
- [导入]批量插入数据的存储过程
- 不写存储过程,插入数据并得到当前插入的主键
- MySQL从多个表中删除数据的存储过程