Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
Sawa_Ito
Product and Topic Expert
Product and Topic Expert
0 Kudos
このページは、以下の英語ページの抄訳です。最新の情報については、英語ページを参照してください。

この記事のオリジナルは、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 標準パッケージのリストになります。

以下に例をあげます。


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」

を入力してください。

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

 

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

こちらよりお問い合わせください。