最近项目中有很多需要做批量操作的需求,客户端把一组逗号分隔的ID字符串传给数据库,存储过程就需要把它们分割,然后逐个处理。 @H_301_0@以往的处理方式有如下几种: 1、在存储过程内写循环,逐个分析字符串中的ID,然后逐个处理。缺点:循环一次处理一个,如果每次判断都很多,效率将很受影响。适合每次处理要做单独判断的情况。2、使用临时表,先调用一个存储过程将ID拆分并插入到临时表中,然后结合临时表可以写sql一次处理多笔。缺点:需要插临时表,效率不高,数据量越大影响越严重。 以前的项目用的最多的还是第2中方式,毕竟方便,且效率比第1种好。 @H_301_0@现在项目中用到了很多很多的批量操作,很多的重复代码让我不厌其烦。忽然想到,.Net和JS中都有split类似的函数,拆分字符串很方便,oracle中要是也有这样的功能该多好呀。 多方查找资料发现,给oracle添加split函数是完全可以实现的,避免了插入临时表,所以效率比上面的第2中方法效率高很多。 后来我还添加了splitstr函数,可以很方便获取字符串中的指定节点。 @H_301_0@有了这两个函数,处理批量操作,真是如虎添翼,效率倍增,嘿嘿…… @H_301_0@好了,闲话少说,上代码!如有不妥之处,请各位前辈博友斧正。 @H_301_0@<div class="codetitle"><a style="CURSOR: pointer" data="65946" class="copybut" id="copybut65946" onclick="doCopy('code65946')"> 代码如下: