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 リファレンス » SQL の使用 » SQL 文 » SQL 文 (A ~ D)

 

CALL 文

この文は、プロシージャを呼び出すために使用します。

構文 1
[variable = ] CALL procedure-name ( [ expression, ... ] )
構文 2
[variable = ] CALL procedure-name ( [ parameter-name = expression, ... ] )
備考

CALL 文は、CREATE PROCEDURE 文を使ってあらかじめ作成されたプロシージャを呼び出します。プロシージャが完了すると、INOUT または OUT パラメータ値がコピーし直されます。

引数リストは、引数の順序を守って指定するか、キーワード・フォーマットを使うことにより指定できます。順序を守って指定する場合、引数はプロシージャのパラメータ・リスト内の対応するパラメータと一致します。キーワードを使用した場合、引数は指定したパラメータと一致します。

プロシージャ引数には、CREATE PROCEDURE 文のデフォルト値が割り当てられます。パラメータが見つからない場合は、デフォルト値が割り当てられます。また、デフォルトが設定されていない場合、パラメータが NULL に設定されます。デフォルトが設定されていないうえ、引数も指定されていない場合には、エラーが発生します。

プロシージャの内部では、プロシージャが結果セットを返す場合、DECLARE 文で CALL 文を使用できます。プロシージャから返される結果を参照してください。

プロシージャは RETURN 文を使用して整数値 (たとえば、ステータス・インジケータとして) を返すことができます。変数の戻り値を保存するには、割り当て演算子として等号を使います。

CREATE VARIABLE returnval INT;
returnval = CALL proc_integer ( arg1 = val1, ... )
注意

呼び出されたプロシージャが INT を返し、値が NULL の場合は、代わりにエラー・ステータス値 0 が返されます。この場合と実際の値の 0 が返される場合とを区別する方法はありません。

パーミッション

プロシージャの所有者であるか、そのプロシージャに対する EXECUTE パーミッションまたは DBA 権限が必要です。

関連する動作

なし

参照
標準と互換性
  • SQL/2003   永続的ストアド・モジュール機能。

ShowCustomers プロシージャを呼び出します。このプロシージャはパラメータがなく、結果セットを返します。

CALL ShowCustomers();

次の Interactive SQL の例は、指定された ID を持つ顧客からの注文の数を戻すプロシージャを作成し、結果を保持する変数を作成し、プロシージャを呼び出し、結果を表示します。

CREATE PROCEDURE OrderCount (IN customer_ID INT, OUT Orders INT)
BEGIN
   SELECT COUNT(SalesOrders.ID)
   INTO Orders
   FROM Customers
   KEY LEFT OUTER JOIN SalesOrders
   WHERE Customers.ID = customer_ID;
END
go
 -- Create a variable to hold the result
CREATE VARIABLE Orders INT
go
-- Call the procedure, FOR customer 101
CALL OrderCount ( 101, Orders )
go
--  Display the result
SELECT Orders FROM DUMMY
go