存储过程批量删除

Posted 勿忘初心

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了存储过程批量删除相关的知识,希望对你有一定的参考价值。

今天闲来无事,把批量删除由代码删除 改成存储过程删除 

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[pr_deletepackage]--------套餐批量删除 
(
@ids nvarchar(100) --参数 (1,2,3,)
)
as
declare @temp table(a varchar(100))--创建临时表
--------把参数@ids分割成int数组 判断是否满足删除条件
declare @n Int
declare @lid int--临时ID
declare @count int --判断是否使用
declare @sercount int --判断该产品下是否存在服务
set @ids=RTRIM(LTRIM(@ids))
set @n=CHARINDEX(,,@ids)
while @n>=1
begin
 set @lid=Left(@ids,@n-1) --截取当前ID
 set @count= (select COUNT(*) from t_order_package  where pi_id=@lid) --判断当前服务是否已经被使用
 set @sercount=(select COUNT(*) from t_package_service where pi_packageid=(select pi_packageid  from t_packages_info where pi_id=@lid)) --判断当前套餐下是否存在服务
 print @count
 print @sercount
 if (@count=0 and @sercount=0) --当前套餐没有使用 且 没有 服务的情况下 将id 插入临时表
 begin
 Insert @temp Values(@lid)
 end
 Set @ids = SubString(@ids,@n+1,Len(@ids)-@n)
 Set @n = CharIndex(,,@ids)
end
if @ids<>‘‘
update t_packages_info set pi_status=-1 where pi_id in(select * from @temp)  --删除 临时表里的id

 

最后一个id后 必须加, 号! 存储过程一直是我的弱项,多写写 没坏处!

以上是关于存储过程批量删除的主要内容,如果未能解决你的问题,请参考以下文章

[MSSQL]批量删除表名包含某字符串的数据表&批量删除存储过程包含某字符串的存储过程

mysql 存储过程批量删除表

mysql存储过程怎样批量插入数据

批量删除Sql Server对象(表,存储过程,触发器)

同步框架:如何在中心辐射模型中启用批量插入/更新/删除存储过程

oracle存储过程怎样批量插入新数据