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'