Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 的用法 » SQL 方言和兼容性 » SQL 方言

 

使用 SQL Flagger 测试 SQL 遵从性

在 SQL Anywhere 中,数据库服务器和 SQL 预处理器 (sqlpp) 可标识作为服务商扩充、不符合特定 ISO/ANSI SQL 标准、或者 UltraLite 不支持的 SQL 语句。此功能称为 SQL Flagger,且它是 SQL/1999 和 SQL/2003 ISO/ANSI SQL 标准的一部分。SQL Flagger 帮助应用程序开发人员标识违反 SQL 语言指定子集的 SQL 语言构造。SQL Flagger 还可用于确保符合 SQL 标准的核心特性,或符合核心特性和可选特性的组合。也可以在原型化使用 SQL Anywhere 的 UltraLite 应用程序时使用 SQL Flagger,以确保所使用的 SQL 受 UltraLite 支持。

尽管 SQL 语句的语法和语义元素均需要 SQL Flagger 进行分析,但 SQL Flagger 旨在提供对遵从性的静态、编译时检查。语法遵从性的一个示例测试是在 INSERT 语句中缺少可选 INTO 关键字(例如,INSERT Products VALUES( ... )),它是 SQL 语言的 SQL Anywhere 语法扩充。使用不带 INTO 关键字的 INSERT 语句会被标记为服务商扩充,因为 ANSI SQL/2003 标准要求使用 INTO 关键字。但是,请注意,INTO 关键字对于 UltraLite 应用程序是可选的。

键连接也会被标记为服务商扩充。如使用 JOIN 关键字并且没有 ON 子句,则缺省情况下使用键连接。键连接使用现有外键关系连接表。UltraLite 不支持键连接。例如,以下查询指定了 Products 和 SalesOrderItems 表之间的隐式连接条件。此查询被 SQL Flagger 标记为服务商扩充。

SELECT * FROM Products JOIN SalesOrderItems;

SQL Flagger 功能不依赖于 SQL 语句的执行;所有标记逻辑仅作为静态、编译时过程执行。

另请参见

调用 SQL Flagger
标准和兼容性