SAP SQL Anywhere の SQL Flagger を呼び出す (過去のブログより)
このページは、以下の英語ページの抄訳です。最新の情報については、英語ページを参照してください。
この記事のオリジナルは、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_LEVEL
とSQL_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_LEVEL
と SQL_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 標準パッケージのリストになります。
以下に例をあげます。
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 に関して技術的な質問のある方はコミュニティに登録し、
「Ask a Question」機能をご利用ください。
Language には「Japanese」、
Primary Tag には「SAP SQL Anywhere」を選択
User Tagに「sql anywhere」「sql anywhere Japanese question」
を入力してください。
不具合につきましては、サポート契約者様専用の問い合わせ方法にてお問い合わせください。
======================
ご購入に関するお問い合わせ
こちらよりお問い合わせください。