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 の使用法 » ストアドプロシージャー、トリガー、バッチ、ユーザー定義関数 » プロシージャー、トリガー、ユーザー定義関数の構造

 

プロシージャーのパラメーター宣言

プロシージャーパラメーターは、CREATE PROCEDURE 文にリストとして表示されます。パラメーター名は、カラム名など他のデータベース識別子に対するルールに従って付けてください。パラメーターは有効なデータ型で、キーワード IN、OUT、INOUT のいずれかのプレフィクスが付いています。デフォルトでは、パラメーターは INOUT パラメーターです。これらのキーワードには、次のような意味があります。

  • IN   引数はプロシージャーに値を提供する式です。

  • OUT   引数はプロシージャーから値を与えられる変数です。

  • INOUT   引数はプロシージャーに値を提供する変数で、プロシージャーから新しい値を与えられることもあります。

CREATE PROCEDURE 文中のプロシージャーパラメーターにはデフォルト値を設定できます。デフォルト値は定数で、NULL でもかまいません。たとえば、次に示すプロシージャーは、IN パラメーターのデフォルトとして NULL を指定しています。これは意味のないクエリを実行するのを避けるためです。



CREATE PROCEDURE CustomerProducts(
      IN customer_ID
                  INTEGER DEFAULT NULL )
RESULT ( product_ID INTEGER,
         quantity_ordered INTEGER )
BEGIN
   IF customer_ID IS NULL THEN
      RETURN;
   ELSE
      SELECT    Products.ID,
               sum( SalesOrderItems.Quantity )
        FROM   Products,
                 SalesOrderItems,
               SalesOrders
      WHERE SalesOrders.CustomerID = customer_ID
      AND SalesOrders.ID = SalesOrderItems.ID
      AND SalesOrderItems.ProductID = Products.ID
      GROUP BY Products.ID;
   END IF;
END;

次に示す文は DEFAULT NULL を割り当て、プロシージャーはクエリを実行しないで戻ります。

CALL CustomerProducts();
 参照