1. 程式人生 > >存儲過程批量刪除

存儲過程批量刪除

code arc 臨時 過程 閑來無事 value lec end ont

今天閑來無事,把批量刪除由代碼刪除 改成存儲過程刪除

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))--創建臨時表
--[email protected] 判斷是否滿足刪除條件
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後 必須加, 號! 存儲過程一直是我的弱項,多寫寫 沒壞處!

存儲過程批量刪除