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 の使用法 » クエリ処理 » クエリの最適化と実行 » セマンティック・クエリ変形

 

単純なシステム・プロシージャのインライン化

単一の SELECT 文として定義されたシステム・プロシージャは、クエリの FROM 句で呼び出されたときにインライン化される場合があります。つまり、元のクエリと同等でプロシージャ定義のないクエリに書き換えられます。プロシージャがインライン化される場合は、派生テーブルとして書き換えられます。プロシージャがデフォルトの引数を使用する場合、または単一の SELECT 文以外が本文に存在する場合は、プロシージャはインライン化されません。

たとえば、次のプロシージャを作成するとします。

CREATE PROCEDURE Test1( arg1 INT )
 BEGIN
  SELECT * FROM Employees WHERE EmployeeID=arg1
 END;

ここで、次のようにクエリの FROM 句でこのプロシージャを呼び出すとします。

SELECT * FROM Test1( 200 );

データベース・サーバは、次のようにクエリを書き換える場合があります。

SELECT * FROM ( SELECT * FROM Employees WHERE EmployeeID=CAST( 200 AS INT ) ) AS Test1;
参照