易截截图软件、单文件、免安装、纯绿色、仅160KB

ASP中使用SQLServer的事务控制及批执行Sql语句

<%
   SQL1 = "update table1 set a=b where id=1"
   Conn.ExeCute SQL1
    SQL2 = "update table2 set a=b where id=2"
   Conn.ExeCute SQL2
   SQL3 = "update table3 set a=b where id=3"
   Conn.ExeCute SQL3
%>
    事实上,这是一种效率很低下的写法,为了提高SQL的执行效率,我们可以把多个SQL语句用分号拼接在一起,然后一次性交给Conn来执行。如下:
<%   
    SQL1 = "update table1 set a=b where id=1"
    SQL2 = "update table2 set a=b where id=2"
    SQL3 = "update table3 set a=b where id=3"
    SQL = SQL1 & ";" & SQL2 & ";" & SQL3
    Conn.ExeCute SQL
%>
    但是,以上2种写法都会面临一个问题,就是当我们需要保证3条SQL语句都必须完整执行,当某一条执行错误时,其他2条也跟着回滚时,我们就需要用到SQLServer的事务控制了,不少的文章建议使用以下方法:
<%
dim Conn=Server.CreateObject("ADODB.Connection")  
'开始事务  
Conn.BeginTrans    
'执行SQL,若成功则提交事,否则回滚事务  
Conn.Execute(sql语句)  
'提交事务  
Conn.CommitTrans  
'回滚事务  
Conn.RollbackTrans
%>
    在很多时候,这并不能达到保证SQL语句完整执行的目的,高效的做法应该是利用SQLServer本身的事务控制功能,如下:
<%
Sub ExeSql(byval SqlStr)
Dim TrSql
TrSql = "SET XACT_ABORT ON;BEGIN TRANSACTION;"
   TrSql = TrSql & SqlStr
   TrSql = TrSql & ";COMMIT TRANSACTION;SET XACT_ABORT OFF"
Conn.ExeCute(TrSql)
End Sub
SQL1 = "update table1 set a=b where id=1"
SQL2 = "update table2 set a=b where id=2"
SQL3 = "update table3 set a=b where id=3"
SQL = SQL1 & ";" & SQL2 & ";" & SQL3
ExeSql SQL
%>


相关文档:

SqlServer存储过程分页

--TOP n 实现的通用分页存储过程(转自邹建)
CREATE PROC sp_PageView
@tbname sysname, --要分页显示的表名
@FieldKey nvarchar(1000), --用于定位记录的主键(惟一键)字段,可以是逗号分隔的多个字段
@PageCurrent int=1, --要显示的页码
@PageSize int=10, - ......

SQLServer 导入导出

·         本文讨论了如何通过Transact-SQL以及系统函数OPENDATASOURCE和OPENROWSET在同构和异构数据库之间进行数据的导入导出,并给出了详细的例子以供参考。
 
1. 在SQL Server数据库之间进行数据导入导出
(1).使用SELECT INTO导出数据 
    ......

SQLServer数据集合的交、并、差集运算

SQLServer2005通过intersect,union,except和三个关键字对应交、并、差三种集合运算。
他们的对应关系可以参考下面图示
       相关测试实例如下:
use tempdb
go
if (object_id ('t1' ) is not null ) drop table t1
if (object_id ('t2' ) is not null ) drop table t2
go
cre ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号