SQL Anywhere では、データベースサーバーと SQL プリプロセッサー (sqlpp) で、ベンダー拡張であるか、特定の ISO/ANSI SQL 標準に準拠しないか、Ultra Light でサポートされていない SQL 文を特定できます。この機能は、SQL Flagger と呼ばれます。ISO/ANSI 9075-1999 SQL 標準 (このマニュアルでは SQL/1999 と呼びます) のオプションの SQL 言語機能 F812 として最初に導入されました。SQL Flagger によって、アプリケーション開発者は SQL 言語の特定のサブセットに違反する SQL 言語要素を特定できます。SQL Flagger を使用すると、SQL 標準のコア機能への準拠、またはコア機能とオプション機能の組み合わせへの準拠も確認できます。また、SQL Flagger は、SQL Anywhere で Ultra Light アプリケーションのプロトタイプを作成するときに、使用している SQL が Ultra Light でサポートされていることを確認するためにも使用できます。
空間データサポートは SQL/MM 標準の第 3 部 (ISO/IEC 13249-3) として標準化されているため、空間機能、操作、構文は SQL Flagger ではサポートされておらず、ベンダー拡張として通知されます。
SQL Flagger では、SQL 文の構文とセマンティックの両要素が分析の対象ですが、準拠はコンパイル時に静的にチェックされます。構文の準拠のテスト例として、INSERT 文にオプションの INTO キーワードがない場合を考えます (たとえば、INSERT Products VALUES( ... )
)。これは、SQL Anywhere による SQL 言語の文法上の拡張です。ANSI SQL/2008 標準では INTO キーワードの使用が必須と定められているので、INTO キーワードがない INSERT 文は、ベンダー拡張として通知されます。ただし、Ultra
Light アプリケーションでは INTO キーワードはオプションです。
キーのジョインもベンダー拡張として通知されます。ON 句を使用しないで、キーワード JOIN を使用する場合、キージョインがデフォルトで使用されます。キージョインは、既存の外部キー関係を使用して、テーブルをジョインします。キージョインは Ultra Light ではサポートされていません。たとえば、次のクエリは、Products テーブルと SalesOrderItems テーブル間の暗黙的なジョイン条件を指定しています。このクエリは、SQL Flagger でベンダー拡張として通知されます。
SELECT * FROM Products JOIN SalesOrderItems; |
SQL Flagger 機能は、SQL 文の実行に依存しません。すべての通知論理は単に静的なコンパイル時の処理として行われます。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |