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. }  

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);  
 

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

posted @ 2011-03-28 14:24  清凉的风/2.0  阅读(1217)  评论(0)    收藏  举报