Skip to Content

このページは、以下の英語ページの抄訳です。最新の情報については、英語ページを参照してください。

この記事のオリジナルは、Glenn Paulley が sybase.com に 2009 年 8 月に掲載したものです。その中で、Glenn は SQL SQL Anywhere における ANSI/ISO 標準 SQL とは異なるSQL 文のバリデーション について解説しています。

新しいバージョンでは、SQL:2008 をサポートするよう flagger が強化されています。

 

SQL 文の flagging は、ANSI/ISO SQL:2008 標準では言語機能 F812 (「基本」flagging) および F813 (「拡張」flagging) に定義されています。
Flagging とは、ANSI/ISO SQL 標準に準拠していない SQL 構造を特定するための概念です。

以下に、SQL Anywhere のサンプル DEMO データベースを使用した簡単な例を示します。

 

SELECT SQLFLAGGER( 'SQL:2003/Core', 'SELECT TOP 10 * FROM Customers

                                                                                WHERE State IN (''NJ'', ''NC'') AND Country LIKE ''%USA%'' ORDER BY Surname' );



SQL Anywhere におけるフラッギング

SQL Anywhere には、SQL 文または SQL 文のバッチをチェックするための SQL Flagger を呼び出す方法がいくつかあります。それらは以下のとおりです。

  • the SQLFLAGGER()関数;
  • the SQL_FLAGGER_ERROR_LEVELSQL_FLAGGER_WARNING_LEVEL 接続オプション
  • the SA_ANSI_STANDARD_PACKAGES システムプロシージャー
  • SQL プリプロセッサー (SQLPP) における flagging 機能

SQLFLAGGER 関数

SQLFLAGGER()関数は、文字列引数として通過する単一の SQL 文またはバッチが、ある特定の SQL 標準に準拠しているかどうかを分析します。
その文またはバッチは parseされますが、実行されません。
この関数は、flagger により output されるあらゆるエラーメッセージを含む LONG VARCHAR を返します。
最初のパラメーターは、SQL 文が比較される標準/実装です。
SQL Anywhere は、SQL:2003 (Core/Package)、SQL:1999 (Core/Package)、SQL:1992 (Full, Intermediate, Entry) そして Ultra Light のコンプライアンス比較をサポートしています。

 

SQL_FLAGGER_ERROR_LEVEL と SQL_FLAGGER_WARNING_LEVEL 接続オプション

SQL_FLAGGER_ERROR_LEVELSQL_FLAGGER_WARNING_LEVEL 接続オプションは、接続のために準備または実行されたあらゆる文の SQL Flagger を呼び出します。
その文がそのオプション設定、つまり、特定の ANSI 標準や Ultra Light に準拠していない場合には、オプション設定によって、エラー (SQLSTATE 0AW03) で終了するか、警告 (SQLSTATE 01W07) を返します。
準拠している場合には、文の実行は通常通り行われます。

 

SA_ANSI_STANDARD_PACKAGES システムプロシージャー

SA_ANSI_STANDARD_PACKAGES() システムプロシージャーは、ANSI/ISO SQL:2003 または SQL:1999 国際標準のオプショナルパッケージを使用するための文またはバッチを分析します。
このプロシージャーは、2つのパラメータをとります。
一つ目は、好ましい標準を特定するストリングです。
二つ目は、分析するSQL 文です。
プロシージャーの結果は、その文で利用されるオプショナルの SQL 標準パッケージのリストになります。

以下に例をあげます。

/wp-content/uploads/2014/05/sa_ansi_packages_409929.png

SQL プリプロセッサーにおけるFlagging

SQL preprocessor は、コンパイル時に embedded SQL アプリケーション内の静的 SQL 文を flaggingすることができます。
この機能は、特に Ultra Light アプリケーションを開発する際に、Ultra Light との互換性を評価するのに便利です。
SQLPP で flagger を使用する場合に必要なことは、SQLPP を呼び出す時の追加のコマンドラインスイッチの設定だけです。

===

 

SAP SQL Anywhere に関する詳細情報は、SAP SQL Anywhere Communityページ<英語> を参照してください。

 

上記のコミュニティーに掲載されている技術情報は、順次SQL Anywhere 日本語コミュニティに掲載しています。

 

SQL Anywhere に関してはまずはこちらをご参照ください。無期限でご利用いただける無償のDevelopers Edition もこちらからダウンロードが可能です。

 

SQL Anywhere に関して技術的な質問のある方はコミュニティに登録し、
「+ Actions」から「Ask a Question」機能をご利用ください。

Language には「Japanese」、
Primary Tag には「SQL Anywhere」、
Additional tag には「SAP SQL Anywhere」、
User Tagに「sql anywhere japanese question」

を選択してください。

不具合につきましては、サポート契約者様専用の問い合わせ方法にてお問い合わせください。

 

======================
ご購入に関するお問い合わせ

こちらよりお問い

合わせください。

To report this post you need to login first.

Be the first to leave a comment

You must be Logged on to comment or reply to a post.

Leave a Reply