zoukankan      html  css  js  c++  java
  • sql传入组合字符串批量操作

    批量操作时我们可以传入一个有规律的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

  • 相关阅读:
    数据库性能测试---前阿里数据库团队资深DBA杨奇龙
    阿里云 MYSQL 与 PG(丁奇与德哥)
    RHEL6中ulimit的nproc限制
    Linux下文件描述符
    Linux中的文件描述符与打开文件之间的关系------------每天进步一点点系列
    5.6 太多分区引起OOM
    Linux lsof命令使用小结
    重现PHP Core的调用栈
    用GDB排查Python程序故障
    mysql 索引优化
  • 原文地址:https://www.cnblogs.com/xiaoliao/p/3416672.html
Copyright © 2011-2022 走看看