在 SQL Anywhere 中,数据库服务器和 SQL 预处理器 (sqlpp) 可标识作为服务商扩充、不符合特定 ISO/ANSI SQL 标准、或者 UltraLite 不支持的 SQL 语句。此功能称为 SQL Flagger,首次作为 ISO/ANSI 9075-1999 SQL 标准(在本文档中称为 SQL/1999)的可选 SQL 语言功能 F812 引入。SQL Flagger 帮助应用程序开发人员标识违反 SQL 语言指定子集的 SQL 语言构造。SQL Flagger 还可用于确保符合 SQL 标准的核心功能,或符合核心功能和可选功能的组合。也可以在原型化使用 SQL Anywhere 的 UltraLite 应用程序时使用 SQL Flagger,以确保所使用的 SQL 受 UltraLite 支持。
由于空间数据支持标准化为 SQL/MM 标准 (ISO/IEC 13249-3) 的第 3 部分,所以空间函数、操作和语法不受 SQL Flagger 支持,而且会标记为供应商扩充。
尽管 SQL 语句的语法和语义元素均需要 SQL Flagger 进行分析,但 SQL Flagger 旨在提供对遵从性的静态、编译时检查。语法遵从性的一个示例测试是在 INSERT 语句中缺少可选 INTO 关键字(例如,INSERT Products VALUES( ... )
),它是 SQL 语言的 SQL Anywhere 语法扩充。使用不带 INTO 关键字的 INSERT 语句会被标记为服务商扩充,因为 ANSI SQL/2008 标准要求使用 INTO 关键字。但是,请注意,INTO 关键字对于 UltraLite
应用程序是可选的。
键连接也会被标记为服务商扩充。如使用 JOIN 关键字并且没有 ON 子句,则缺省情况下使用键连接。键连接使用现有外键关系连接表。UltraLite 不支持键连接。例如,以下查询指定了 Products 和 SalesOrderItems 表之间的隐式连接条件。此查询被 SQL Flagger 标记为服务商扩充。
SELECT * FROM Products JOIN SalesOrderItems; |
SQL Flagger 功能不依赖于 SQL 语句的执行;所有标记逻辑仅作为静态、编译时过程执行。
![]() |
使用DocCommentXchange 讨论此页。
|
版权 © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |