Q13:MySQL のストアドプロシージャにパラメータを渡し処理結果の戻り値をMZプラットフォームで行うにはどのようにするのでしょうか?具体例をお願いいたします。
A13:
MySQLのリファレンス内のページ
http://dev.mysql.com/doc/refman/5.1/ja/create-procedure.html
11.2.1. CREATE PROCEDUREおよびCREATE FUNCTION 構文
にあるサンプルプログラムを例にご説明します。
@テーブル「t」のレコード数を取得するプロシジャーを定義します。
CREATE PROCEDURE simpleproc (OUT param1 INT)
BEGIN
SELECT COUNT(*) INTO param1 FROM t;
END;
この文は改行が入りますので、MZPlatformのテキストフィールドには書込みにくい場合は、MySQLクライアントから予め定義してください。
MySQLのクライアントから定義する場合は、delimiter(区切り符号)をサンプル通り、変更しておく必要があります。MZPlatform上ではその必要はありません。
ACALL simpleproc(@a)の文は[データベースアクセス]コンポーネントの
「メソッド:SQL文を実行する」で実行できます。
MZPlatformからOUT引数のあるCALL文を実行した場合は、引数に指定した変数の中に結果が格納されるので、まだ結果は返ってきません。
B「@a」の中に格納された結果を見るにはselect @a を実行します。
通常のselect文と同様、結果は[データベースアクセス]コンポーネントのデータ生成イベント内からテーブル形式のものを取得できます。
A、BのCALL文、SELECT文は、前回ご紹介したように、MZPlatform上で[文字列格納変数]コンポーネントを利用して、任意の文にすることができます。
「データベースアクセス」チュートリアル等に該当の箇所があります。
もし、[文字列格納変数」コンポーネントについてご不明な点がありましたら、どうぞお問い合わせ下さい。
MySQLのリファレンスのページの他に参考になるものとして 「@ITアットマーク・アイティエンタープライズ市場に向かうMySQL 5.0[後編]〜 MySQL 5.0のストアドプロシージャをチェック 〜」
http://www.atmarkit.co.jp/flinux/special/mysql5/mysql5d.html
に幾つか例が載っていますので、宜しければご覧下さい。