欢迎投稿

今日深度:

如何由Sybase向SQL Server移植数据库(1)(2)

事务管理模式

Sybase SQL Server

Set chained [ on : off ] Set implicit_transactions [on : off ]

在Sybase中使用下面的代码判断事务模式:

SELECT @@tranchained
GO

下面是可能返回的结果:

0 表明使用的是非链锁式事务模式

1 表明连接运行在链锁模式下

在SQL Server中使用下面的代码判断事务模式:

IF (@@options & 2) > 0
PRINT on
ELSE
PRINT off

下面是可能的返回结果:

0 off
>0 on

隔离水平

在一个关系数据库这样的多线程应用软件中,数据库引擎对运行的进程间的数据是如何被隔离的管理是非常重要的,在表示隔离水平时,Sybase和SQL Server的语法是不同的。下面的表格表明了Sybase和SQL Server在表示隔离水平时的差别。

Sybase SQL Server

0 READ UNCOMMITTED
1 READ COMMITTED
2 REPEATABLE READ
3 SERIALIZABLE

游标语法

二种产品中存储过程的创建和执行基本相似,但在移植时,游标语句中的一些例外是我们应当注意的。下面是一个例子:

CREATE PROCEDURE sql_cursor AS
DECLARE @lname char(20), @fname char(20)
DECLARE mycursor CURSOR FOR
SELECT au_lname, au_fname FROM authors
OPEN mycursor
FETCH FROM mycursor INTO @lname, @fname
WHILE @@ FETCH_STATUS = 0
/* Sybase数据库使用@SQLSTATUS而不是@@ FETCH_STATUS */
BEGIN
FETCH FROM mycursor INTO @lname, @fname
/*
** 这里应当是一些业务逻辑
*/
END
CLOSE mycursor
DEALLOCATE /* Sybase数据库在这里需要CURSOR这个词 * / mycursor


Sybase SQL Server

Fetch命令执行成功 0 0
Fetch命令执行失败 1 -2
没有可存取的记录了 2 -1


www.htsjk.Com true http://www.htsjk.com/shujukugl/18122.html NewsArticle 事务管理模式 Sybase SQL ServerSet chained [ on : off ] Set implicit_transactions [on : off ] 在Sybase中使用下面的代码判断事务模式: SELECT @@tranchainedGO 下面是可能返回的结...
评论暂时关闭