SQL批量处理方法总结

SQL中常用的批量处理可以通过事务、循环语句、批量处理语句以及存储过程等方式实现,比较常用而且简单是事务、循环语句和批量处理语句,下面重点介绍!

1、事务

     程序中批量执行SQL语句时可以通过事务保证执行任务的完整性!实例代码如下:    

  1. CDatebase   m_myDB;  
  2. m_myDB.Open(....);  
  3. ...  
  4. if(!m_myDB.BeginTrans())     //开始事务  
  5.    return   FALSE;  
  6. try  
  7. {  
  8.    // 批量处理语句  
  9.    m_myDB.ExecuteSQL(strSQL1);  
  10.    m_myDB.ExecuteSQL(strSQL2);  
  11.    ...  
  12.    m_myDB.CommitTrans(   );     //提交事务  
  13. }  
  14. catch(CDBException*   e)  
  15. {  
  16.    e-> ReportError();  
  17.    m_db.Rollback(   );         //如果出错,回滚事务  
  18. }  
CDatebase m_myDB; m_myDB.Open(....); ... if(!m_myDB.BeginTrans()) //开始事务 return FALSE; try { // 批量处理语句 m_myDB.ExecuteSQL(strSQL1); m_myDB.ExecuteSQL(strSQL2); ... m_myDB.CommitTrans( ); //提交事务 } catch(CDBException* e) { e-> ReportError(); m_db.Rollback( ); //如果出错,回滚事务 }

2、循环语句

    SQL中的循环语句可以实现有规律数据的批量处理,比如在VC++中可以用如下的语句实现数据批量插入(格式化SQL语句时不同编译环境有可能不同,比如VC++中各个语句间用空格相隔)

  1.    
  2.        CString strTestSQL = _T("");  
  3. strTestSQL.Format(_T("declare @i int \  
  4.                set @i = 0  \  
  5.                while @i < 3 \  
  6.                begin  \  
  7.                insert test(guid1,guid2,enum2,strValue,dwDataSize) values(NewID(), NewID(), 6, '', @i)  \  
  8.                Set @i =@i + 1  \  
  9.                end "));  
  10. BOOL bRtn = m_myDB->ExecuteSQL(strTestSQL);  
CString strTestSQL = _T(""); strTestSQL.Format(_T("declare @i int \ set @i = 0 \ while @i < 3 \ begin \ insert test(guid1,guid2,enum2,strValue,dwDataSize) values(NewID(), NewID(), 6, '', @i) \ Set @i =@i + 1 \ end ")); BOOL bRtn = m_myDB->ExecuteSQL(strTestSQL);  

3、批量处理语句:
     利用SQL自身提供批量语句实现数据库的批量处理,比如批量删除语句可以通过Delete实现,表间数据的拷贝或者插入可以通过下面的语句实现:
     MS SQL Server
         Insert into  复制表名称  select语句 (复制表已存在)
        Select  字段列表  into  复制表名称  from  表(复制表不存在)
    Oracle
         Insert into 复制表名称 select语句(复制表已存在)
         create table 复制表名称 as select语句(复制表不存在)
   当然,SQL中还有其它性能更高的批量处理方式,这个有待于学习!

转载于:https://www.cnblogs.com/VirtualLive/archive/2011/03/28/1997701.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值