数据库里有十几万数据,现在要批量对这些数据的一个字段内容全部修改(不是改成一样的)。用存储过程怎么写呢  

解决方案 »

  1.   

    一个表里有  id  title  keyword  createtime   等等 现在要 根据 表单的输入  选择出 符合的数据  
    比如 选出 createtime 在 2012-6-1 到 2012-6-22 之间的数据然后把keyword 根据一个已有的函数获得新值 然后存入
    这个函数在asp里写好了 
      

  2.   

    或者根据 id  来    ,选出 id 在 10  到 1000 间 。。存储过程要能传具体的sql筛选条件进去 
      

  3.   


    --根据ID
    select * 
    from tb 
    where id between 变量一 and 变量二
    --根据时间
    select * from tb 
    where createtime between  '2012-6-1' and '2012-6-22' --两者都需要select * from tb 
    where createtime between  '2012-6-1' and '2012-6-22' 
    and id between 变量一 and 变量二
      

  4.   

    1.写一个数据库函数,这个函数等同于你的asp函数
    2.update tableX set keyword=yourSQLFunction(...) where createtime>.. and createtime<...;
      

  5.   

    另一个方法,将多个update语句组合起来,再批量执行,如:sql="";
    sql.AppendLine("update tableX set keyword=??? where id=xxx;");
    sql.AppendLine("update tableX set keyword=??? where id=xxx;");
    sql.AppendLine("update tableX set keyword=??? where id=xxx;"); //确保sql的长度不超过sql server的最大值
    cmd.Text=sql.ToString();
    cmd.ExecuteNoQuery();
      

  6.   

    另外,十几万的表,数据量不会太大,在条件列上做好索引,即使一条一条的update,性能也不会太差,不用太担心。如果你的表某些字段会被频繁更新,而其它字段相对固定,可以考虑将表拆开,频繁更新的列放在一个表,相对固定的列放在另一个表,两者用id关联起来。不过这会增加逻辑复杂性,只有在性能成为瓶颈的情况才应考虑。