Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 » SQL Anywhere サーバ SQL の使用法 » ストアドプロシージャ、トリガ、バッチ、ユーザ定義関数 » 結果セット

 

プロシージャの変数結果セット

RESULT 句は、プロシージャでは省略可能です。RESULT 句を省略すると、実行方法に応じて、さまざまなカラム数またはカラム型の、異なる結果セットを返すプロシージャを記述できます。

変数結果セット機能を使用しない場合は、性能を高めるために RESULT 句を使用してください。

たとえば、次のプロシージャは、変数として Y を入力した場合は 2 カラムを、それ以外の場合は 1 カラムを返します。



CREATE PROCEDURE Names( IN formal char(1) )
BEGIN
   IF formal = 'y' THEN
      SELECT Surname, GivenName
      FROM Employees
   ELSE
      SELECT GivenName
      FROM Employees
   END IF
END;

クライアントアプリケーションで使用しているインタフェースによっては、プロシージャでの変数結果セットの使用に制限があります。

  • Embedded SQL   正しい形式の結果セットを取得するには、結果セットのカーソルが開かれてからローが返されるまでの間に、プロシージャコールを記述 (DESCRIBE) します。

    RESULT 句を使用しないでプロシージャを作成し、そのプロシージャが変数結果セットを返す場合には、プロシージャを参照する SELECT 文の DESCRIBE が失敗することがあります。DESCRIBE の失敗を防ぐには、SELECT 文の FROM 句に WITH 句を含めることをおすすめします。または、DESCRIBE 文で WITH VARIABLE RESULT 句を使用できます。WITH VARIABLE RESUL 句は、各 OPEN 文の後にプロシージャ呼び出しを記述すべきかどうかを判断するのに使用できます。

  • ODBC   変数結果セットプロシージャは ODBC アプリケーションで使用できます。SQL Anywhere ODBC ドライバは、変数結果セットを正しく記述します。

  • Open Client アプリケーション   Open Client アプリケーションは、変数結果セットプロシージャを使用できます。SQL Anywhere は、変数結果セットを正しく記述します。

 参照