sql传入组合字符串批量操作
2013-11-10 14:42
344 查看
批量操作时我们可以传入一个有规律的ID或则是其他唯一值字段的组合字符串,然后:select/update/inset......where 字段 in(传入的组合字符串),而且很多时候我们还涉及到其他操作,下面也有代码,就是将传入的组合字符串,重新分割后,再次对数据库进行操作
create proc prc_OrderBatchHandle
@Sgin int,
@BatchStr varchar(50),
@HandleAdmin varchar(50)
as
declare @MediumBatchStr varchar(500)
set @MediumBatchStr=','+@BatchStr+','//这里是将传入的字符串 前后各加一个,符号,重新组合成一个有规律的字符串,已方便下面切分操作
declare @prc_GroupStr nvarchar(600)
declare @prc_AddHandleMember nvarchar(600)
if(@Sgin=1)
begin
set @prc_GroupStr= N'update QD_OrderSheet set order_nowState=''成功'' where order_Id IN ('+@BatchStr+')'
exec sp_ExecuteSql @prc_GroupStr
set @prc_AddHandleMember= N'update QD_OrderSheet set order_handleUser='''+@HandleAdmin+''' where order_Id IN ('+@BatchStr+')'
exec sp_ExecuteSql @prc_AddHandleMember
end
else if(@Sgin=2)
begin
set @prc_GroupStr= N'update QD_OrderSheet set order_nowState=''失败'' where order_Id IN ('+@BatchStr+')'
exec sp_ExecuteSql @prc_GroupStr
set @prc_AddHandleMember= N'update QD_OrderSheet set order_handleUser='''+@HandleAdmin+''' where order_Id IN ('+@BatchStr+')'
exec sp_ExecuteSql @prc_AddHandleMember
while(LEN(@MediumBatchStr)>1)字符串分割后操作部分
begin
declare @value varchar(50)
select @value=left(stuff(@MediumBatchStr,1,charindex(',',@MediumBatchStr),''),charindex(',',stuff(@MediumBatchStr,1,charindex(',',@MediumBatchStr),''))-1)
declare @ReturnMoney money
select @ReturnMoney= order_Price from QD_OrderSheet where order_Id=cast(@value as int)
declare @BuyUser varchar(50)
select @BuyUser=order_BuyAccount from QD_OrderSheet where order_Id=cast(@value as int)
declare @Suppler varchar(50)
select @Suppler=order_supplierName from QD_OrderSheet where order_Id=cast(@value as int)
update QD_UserSheet set user_Money=user_Money+@ReturnMoney where user_Account=@BuyUser
update QD_SuppierSheet set Supplier_Money=Supplier_Money-@ReturnMoney where Supplier_Account=@Suppler
set @MediumBatchStr=stuff(@MediumBatchStr,1,LEN(@value)+1,'')
end 分割后结束部分
end
else
begin
set @prc_GroupStr= N'delete from QD_OrderSheet where source_Id IN('+@BatchStr+')'
exec sp_ExecuteSql @prc_GroupStr
end
create proc prc_OrderBatchHandle
@Sgin int,
@BatchStr varchar(50),
@HandleAdmin varchar(50)
as
declare @MediumBatchStr varchar(500)
set @MediumBatchStr=','+@BatchStr+','//这里是将传入的字符串 前后各加一个,符号,重新组合成一个有规律的字符串,已方便下面切分操作
declare @prc_GroupStr nvarchar(600)
declare @prc_AddHandleMember nvarchar(600)
if(@Sgin=1)
begin
set @prc_GroupStr= N'update QD_OrderSheet set order_nowState=''成功'' where order_Id IN ('+@BatchStr+')'
exec sp_ExecuteSql @prc_GroupStr
set @prc_AddHandleMember= N'update QD_OrderSheet set order_handleUser='''+@HandleAdmin+''' where order_Id IN ('+@BatchStr+')'
exec sp_ExecuteSql @prc_AddHandleMember
end
else if(@Sgin=2)
begin
set @prc_GroupStr= N'update QD_OrderSheet set order_nowState=''失败'' where order_Id IN ('+@BatchStr+')'
exec sp_ExecuteSql @prc_GroupStr
set @prc_AddHandleMember= N'update QD_OrderSheet set order_handleUser='''+@HandleAdmin+''' where order_Id IN ('+@BatchStr+')'
exec sp_ExecuteSql @prc_AddHandleMember
while(LEN(@MediumBatchStr)>1)字符串分割后操作部分
begin
declare @value varchar(50)
select @value=left(stuff(@MediumBatchStr,1,charindex(',',@MediumBatchStr),''),charindex(',',stuff(@MediumBatchStr,1,charindex(',',@MediumBatchStr),''))-1)
declare @ReturnMoney money
select @ReturnMoney= order_Price from QD_OrderSheet where order_Id=cast(@value as int)
declare @BuyUser varchar(50)
select @BuyUser=order_BuyAccount from QD_OrderSheet where order_Id=cast(@value as int)
declare @Suppler varchar(50)
select @Suppler=order_supplierName from QD_OrderSheet where order_Id=cast(@value as int)
update QD_UserSheet set user_Money=user_Money+@ReturnMoney where user_Account=@BuyUser
update QD_SuppierSheet set Supplier_Money=Supplier_Money-@ReturnMoney where Supplier_Account=@Suppler
set @MediumBatchStr=stuff(@MediumBatchStr,1,LEN(@value)+1,'')
end 分割后结束部分
end
else
begin
set @prc_GroupStr= N'delete from QD_OrderSheet where source_Id IN('+@BatchStr+')'
exec sp_ExecuteSql @prc_GroupStr
end
相关文章推荐
- SQL自定义函数实现字符串截取转化为整型(主要用于对批量数据的操作)
- 组合、拆分字符串,通过事务执行批量操作
- SQl操作字符串
- 3.数据库操作相关术语,Oracle认证,insert into,批量插入,update tablename set,delete和truncate的区别,sql文件导入
- SQL字符串数组操作(转)
- SQL字符串基本操作汇总
- 练习LINQ:同时操作二维和一维数组,把二维数组转为一维,计算一维和二维值,字符串组合,计算数组和,数组筛选,排序
- SQL 批量替换字符串
- sql 获取字符串长度SQL字符串操作汇总
- Sql 截取、替换 字符串 ,数据批量导入
- sql 获取字符串长度SQL字符串操作汇总
- java批量操作sql替换数据库数据
- SQL字符串操作汇总
- 3.数据库操作相关术语,Oracle认证,insert into,批量插入,update tablename set,delete和truncate的差别,sql文件导入
- SQL 批量替换字符串
- Mysql bench执行sql语句批量操作数据所遇到的问题
- SQL点滴33—SQL中的字符串操作
- 获取字符串长度SQL字符串操作
- SQL字符串数组操作(转)
- 使用ADO.NET下的SqlBulkCopy类执行批量复制操作