- PR -

[MySQL]動的SQLの実行結果を取得したい

1
投稿者投稿内容
ドルビー
常連さん
会議室デビュー日: 2006/07/11
投稿数: 21
投稿日時: 2006-10-17 17:15
MySQLのストアドプロシージャを使っていますが、
動的SQL文(SELECT文)を実行した結果を取得する方法が、
いろいろ調べましたがわかりません。

今のところ、以下のコードのように書くと、
動的SQLは実行できますが、結果を取得して、
その結果を使って処理することが今のスキルではできません。

--------------------------------------------
/* 動的SQLを格納する変数 */
DECLARE s_sql text;

SET s_sql = 'select count(*) from 〜';

/* 普通に動的SQLを実行する場合 */
prepare query from s_sql;
execute query;
deallocate prepare query;
--------------------------------------------

すみませんが、アドバイスお願いします。
99ri
大ベテラン
会議室デビュー日: 2006/09/09
投稿数: 129
投稿日時: 2006-10-23 07:43
返信が遅れましたが、ユーザ変数を使用することで可能です
@cntがユーザ変数です
ユーザ変数についてはMYSQLのマニュアル6.1.4.に説明があります

PREPARE stmt_name FROM "select count(*) INTO @cnt from t_test";
EXECUTE stmt_name ;
if @cnt <= 0 then

提示されたコードではありませんが
EXECUTEの引数USINGもユーザ変数にする必要があります
PREPARE ではユーザ変数を使用するようです
mysql prepare storedprocedure faqで検索
forums.mysql.com/read.php?98,117381,117381
forums.mysql.com/read.php?98,117381,117393#msg-117393
Prepared statements can only be executed from '@' variables.


[ メッセージ編集済み 編集者: 99ri 編集日時 2006-10-23 10:45 ]
ドルビー
常連さん
会議室デビュー日: 2006/07/11
投稿数: 21
投稿日時: 2006-10-23 16:33
99riさん、ありがとうございます!

邪道手段ではありましたが、メモリテーブルへの件数格納を行なって、
問題解決を図ったんですが、99riさんの方法をとることで、
最も簡単に実現することができました。
1

スキルアップ/キャリアアップ(JOB@IT)