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

SQL Anywhere 12.0.1 » 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 は、変数結果セットを正しく記述します。

 参照