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 標準に準拠しないか、Ultra Light でサポートされていない SQL 文を特定できます。この機能は SQL FLAGGER と呼ばれ、SQL/1999 と SQL/2003 の ISO/ANSI SQL 標準で定められています。SQL FLAGGER によって、アプリケーション開発者は SQL 言語の特定のサブセットに違反する SQL 言語要素を特定できます。SQL FLAGGER を使用すると、SQL 標準のコア機能への準拠、またはコア機能とオプション機能の組み合わせへの準拠も確認できます。また、SQL FLAGGER は、SQL Anywhere で Ultra Light アプリケーションのプロトタイプを作成するときに、使用している SQL が Ultra Light でサポートされていることを確認するためにも使用できます。

SQL FLAGGER では、SQL 文の構文とセマンティックの両要素が分析の対象ですが、準拠はコンパイル時に静的にチェックされます。構文の準拠のテスト例として、INSERT 文にオプションの INTO キーワードがない場合を考えます (たとえば、INSERT Products VALUES( ... ))。これは、SQL Anywhere による SQL 言語の文法上の拡張です。ANSI SQL/2003 標準では INTO キーワードの使用が必須と定められているので、INTO キーワードがない INSERT 文は、ベンダ拡張として通知されます。ただし、Ultra Light アプリケーションでは INTO キーワードはオプションです。

キーのジョインもベンダ拡張として通知されます。ON 句を使用しないで、キーワード JOIN を使用する場合、キー・ジョインがデフォルトで使用されます。キー・ジョインは、既存の外部キー関係を使用して、テーブルをジョインします。キー・ジョインは Ultra Light ではサポートされていません。たとえば、次のクエリは、Products テーブルと SalesOrderItems テーブル間の暗黙的なジョイン条件を指定しています。このクエリは、SQL FLAGGER でベンダ拡張として通知されます。

SELECT * FROM Products JOIN SalesOrderItems;

SQL FLAGGER 機能は、SQL 文の実行に依存しません。すべての通知論理は単に静的なコンパイル時の処理として行われます。

参照

SQL FLAGGER の起動
標準と互換性