Adaptive Server Anywhere 支持 Transact-SQL 中相当大的一部分,Transact-SQL 是 Sybase Adaptive Server Enterprise 所支持的 SQL 方言。本章将介绍 Adaptive Server Anywhere 和 Adaptive Server Enterprise 之间的 SQL 兼容性。
Adaptive Server Anywhere 对 Transact-SQL 的支持可以达到以下目的:
应用程序可移植性 所编写的许多应用程序、存储过程和批处理文件都可以与 Adaptive Server Enterprise 数据库和 Adaptive Server Anywhere 数据库一起使用。
数据可移植性 Adaptive Server Anywhere 和 Adaptive Server Enterprise 数据库之间可以轻松地相互进行数据交换和复制。
主要的目标是编写既可用于 Adaptive Server Enterprise 又可用于 Adaptive Server Anywhere 的应用程序。现有的 Adaptive Server Enterprise 应用程序通常需要做出一些更改才能在 Adaptive Server Anywhere 数据库上运行。
Adaptive Server Anywhere 通过以下形式支持 Transact-SQL:
许多 SQL 语句在 Adaptive Server Anywhere 和 Adaptive Server Enterprise 之间兼容。
对于某些语句(尤其是在过程、触发器和批处理语句中使用的过程语言),将支持单独的 Transact-SQL 语句以及 Adaptive Server Anywhere 的先前版本中所支持的语法。对于这些语句,Adaptive Server Anywhere 支持 SQL 的两种方言。本章将这两种方言称作 Transact-SQL 和 Watcom-SQL。
过程、触发器或批处理语句将以 Transact-SQL 或 Watcom-SQL 方言执行。在整个批处理语句或过程中,必须仅使用一种方言的控制语句。例如,每种方言都有不同的流控制语句。
下图说明了这两种方言的重叠情况。
在处理现有数据时,Adaptive Server Anywhere 支持大多数的 Transact-SQL 语言元素、函数和语句。例如,Adaptive Server Anywhere 支持所有数字函数、所有字符串函数(一种函数除外)、所有集合函数以及所有日期和时间函数。又比如,Adaptive Server Anywhere 支持 Transact-SQL 外部连接(使用 =* 和 *= 运算符),还支持使用连接的 DELETE 和 UPDATE 扩展语句。
另外,Adaptive Server Anywhere 还支持大多数的 Transact-SQL 存储过程语言(CREATE PROCEDURE 和 CREATE TRIGGER 语法、控制语句等)以及 Transact-SQL 数据定义语言语句的许多(但不是所有)方面。
每种产品所支持的体系结构和配置功能存在着设计上的差异。设备管理、用户管理和维护任务(如备份)往往是因系统而异的。即使在这种情况下,Adaptive Server Anywhere 仍将 Transact-SQL 系统表作为视图来提供(在视图中,在 Adaptive Server Anywhere 中没有任何意义的表将不显示任何行)。此外,Adaptive Server Anywhere 为某些常见的管理任务提供了一组系统过程。
在讨论这些方言的数据操作和数据定义语言等兼容性高的方面之前,本章将首先讨论一些差异最为明显的系统层面上的问题。
Adaptive Server Anywhere 所支持的某些 SQL 语句只在一种方言中使用,而不在另一种方言中使用。您不能在一个过程、触发器或批处理语句中混用两种方言。例如,Adaptive Server Anywhere 支持以下语句,但这些语句仅用于 Transact-SQL 方言:
Transact-SQL 控制语句 IF 和 WHILE
Transact-SQL 的 EXECUTE 语句
Transact-SQL 的 CREATE PROCEDURE 和 CREATE TRIGGER 语句
Transact-SQL 的 BEGIN TRANSACTION 语句
Transact-SQL 过程或批处理语句中可以使用未 以分号分隔的 SQL 语句
Adaptive Server Enterprise 不支持以下语句:
控制语句 CASE、LOOP 和 FOR
IF 和 WHILE 的 Adaptive Server Anywhere 版本
CALL 语句
CREATE PROCEDURE、CREATE FUNCTION 和 CREATE TRIGGER 语句的 Adaptive Server Anywhere 版本
由分号分隔的 SQL 语句
不能在一个过程、触发器或批处理语句中混用两种方言。这意味着:
可以在一个批处理语句、过程或触发器中同时包含仅限 Transact-SQL 的语句以及属于两种方言的语句。
可以在一个批处理语句、过程或触发器中同时包含 Adaptive Server Enterprise 不支持的语句以及两种服务器都支持的语句。
不能在一个批处理语句、过程或触发器中同时包含仅限 Transact-SQL 的语句和仅限 Adaptive Server Anywhere 的语句。
SQL Anywhere Studio 9.0.2
版权所有 © 1989–2005 Sybase, Inc. 部分版权所有 © 2001–2005 iAnywhere Solutions, Inc. 保留所有权利。