存儲過程批量刪除
阿新 • • 發佈:2017-05-26
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 @countint --判斷是否使用 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 wherepi_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後 必須加, 號! 存儲過程一直是我的弱項,多寫寫 沒壞處!
存儲過程批量刪除