• 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

  • 相关阅读:
    Weblogic 12c 集群部署和session复制
    Weblogic 12c 集群环境搭建
    Programming In Scala笔记-第十九章、类型参数,协变逆变,上界下界
    这是最好的时光,这是最坏的时光 SNAPSHOT
    这是最好的时光 这是最坏的时光 v0.1.1.1
    鹅厂欧阳大神给年轻人的一些分享
    谈到电影,我们收获了什么
    那些被电影搞的日子
    Programming In Scala笔记-第十五章、Case Classes和模式匹配
    [CSharp]传一个包含多个属性的对象,只改变其中个别属性值的方法
  • 原文地址:https://www.cnblogs.com/xiaoliao/p/3416672.html
Copyright © 2020-2023  润新知