Embedded SQL でストアドプロシージャを作成して呼び出すことができます。
CREATE PROCEDURE は、CREATE TABLE など、他のデータ定義文と同じように埋め込むことができます。また、ストアドプロシージャを実行する CALL 文を埋め込むこともできます。次のコードフラグメントは、Embedded SQL でストアドプロシージャを作成して実行する方法を示しています。
EXEC SQL CREATE PROCEDURE pettycash( IN Amount DECIMAL(10,2) ) BEGIN UPDATE account SET balance = balance - Amount WHERE name = 'bank'; UPDATE account SET balance = balance + Amount WHERE name = 'pettycash expense'; END; EXEC SQL CALL pettycash( 10.72 ); |
ホスト変数の値をストアドプロシージャに渡したい場合、または出力変数を取り出したい場合は、CALL 文を準備して実行します。次のコードフラグメントは、ホスト変数の使用方法を示しています。EXECUTE 文では、USING 句と INTO 句の両方を使用しています。
EXEC SQL BEGIN DECLARE SECTION; double hv_expense; double hv_balance; EXEC SQL END DECLARE SECTION; hv_expense = 20.00; db_init( &sqlca ); EXEC SQL CONNECT USING 'UID=DBA;PWD=sql'; EXEC SQL CREATE OR REPLACE PROCEDURE pettycash( IN expense DECIMAL(10,2), OUT endbalance DECIMAL(10,2) ) BEGIN UPDATE account SET balance = balance - expense WHERE name = 'bank'; UPDATE account SET balance = balance + expense WHERE name = 'pettycash expense'; SET endbalance = ( SELECT balance FROM account WHERE name = 'bank' ); END; EXEC SQL PREPARE S1 FROM 'CALL pettycash( ?, ? )'; EXEC SQL EXECUTE S1 USING :hv_expense INTO :hv_balance; |
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |