存储过程批量删除

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

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后 必须加, 号! 存储过程一直是我的弱项,多写写 没坏处!

时间: 2024-08-02 17:10:43

存储过程批量删除的相关文章

mysql存储过程批量删除

SP:BEGIN  WHILE instr(_checkstr,_str) <>0 DO SELECT sortNum  INTO @V FROM InApp_job WHERE jobId = substring(_checkstr,1,instr(_checkstr,_str)-1);  DELETE FROM InApp_job WHERE jobId = substring(_checkstr,1,instr(_checkstr,_str)-1);  UPDATE InApp_job

sqlserver中自定义函数+存储过程实现批量删除

由于项目的需要,很多模块都要实现批量删除的功能.为了方便模块的调用,把批量删除方法写成自定义函数.直接上代码. 自定义函数: ALTER FUNCTION [dbo].[func_SplitById] (@str varchar(50),@split varchar(10))--传过来的id字符串 --分割的标志 RETURNS @t Table (id int) --返回一个表 AS BEGIN DECLARE @x XML --进行拼接 SET @x = CONVERT(XML,'<item

Hibernate批量更新和批量删除批量添加 1(转)

通常,在一个Session对象的缓存中只存放数量有限的持久化对象,等到Session对象处理事务完毕,还要关闭Session对象,从而及时释放Session的缓存占用的内存.批量处理数据是指在一个事务中处理大量数据.以下程序在一个事务中批量更新CUSTOMERS表中年龄大于零的所有记录的AGE字段:Transaction tx = session.beginTransaction();Iterator customers=session.createQuery("from Customer c

LINQ To SQL在N层应用程序中的CUD操作、批量删除、批量更新

原文:LINQ To SQL在N层应用程序中的CUD操作.批量删除.批量更新 0. 说明 Linq to Sql,以下简称L2S.    以下文中所指的两层和三层结构,分别如下图所示: 准确的说,这里的分层并不是特别明确:(1) 生成的DataContext(Linq t0 SQL Runtime)和Entity是放在一个文件中的,物理上不能切割开来:上图只是展示逻辑上的结构.(2) 拿上图右边的三层结构来说,鉴于第(1)点,UI层就可以跨越BusinessLogic层,直接访问L2S层,这可能

批量删除 添加 表主键 sql-- 存储过程

sql 批量操作添加/ 删除 表主键 直接上代码把:  是存储过程哦 , GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER proc [dbo].[prc_name] (@nameinfo nvarchar(50) output)AS declare @Key NVARCHAR(MAX) --创建参数 返回创建主键declare @tab NVARCHAR(MAX) --创建参数 返回 表declare @tabs NVARCHAR(MAX

mysq批量删除sleep进程

由于sleep进程比较多,就写个特简单的脚本,批量删除下,只保留5个即可 #!/bin/sh n=`/export/servers/mysql/bin/mysqladmin processlist -uroot -pxxxxx|grep -i sleep |wc -l` echo $n if [ "$n" -gt 10 ] then for i in `/export/servers/mysql/bin/mysqladmin processlist -uroot -pxxxxxx|gr

批量删除遇见的问题

做批量删除时遇见的问题: org.apache.ibatis.binding.BindingException: Parameter 'ids' not found. Available parameters are [array] 前台jsp页面的ajax请求可以进入: 但是点击批量删除的按钮时会报这个错误: 后来发现是Mapper中的collection定义错了: 把<foreach>标签中的collection="ids"改为collection="arra

利用yii2 gridview实现批量删除案例[转]

今天仍然继续探讨GridView的问题,昨天有个小伙伴留言说你用gridview给我去掉表头的链接?我想啊想,这用gridview确实不容易实现,至少我没想出来,会的下方可留言.但是呢,这根gridview有个毛线关联啊,明明是要设置ActiveDataProvider,你要我怎么用gridview实现嘛. 这个问题也是很简单的,我们来看看具体实现 $dataProvider = new ActiveDataProvider([ "query" => $query, ]); $d

【DRP】—【SQL】批量删除

1 /** 2 * 批量删除用户 3 * 4 * 采用一条语句完成删除 5 * 只提交一次 6 * 7 * 采用Statement拼串方式 8 * delete from t_user where user_id in ('aaaa', 'afff', 'eeee') 9 * @param userIds 10 */ 11 public void delUser(String[] userIds) { 12 StringBuilder sbStr = new StringBuilder(); 1