您的位置:首页 > 编程语言 > ASP

关于主键列执行批量删除单表数据的存储过程,

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'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  asp delete 数据
相关文章推荐