プロシージャ・パラメータは、CREATE PROCEDURE 文にリストとして表示されます。パラメータ名は、カラム名など他のデータベース識別子に対するルールに従って付けてください。パラメータは有効なデータ型 (SQL データ型を参照) で、キーワード 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(); |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |