1

Oracleと同様EXECUTE IMMEDIATEに、MySQL ストアド プロシージャでコードを動的に実行する方法はありますか?

ループの各反復で新しい SQL ステートメントを生成するために、MySQL ストアド プロシージャ内でプリペアド ステートメントを使用したいと考えています。

4

2 に答える 2

1

実際、私が書いたようには機能しません。私は次のようにコーディングします:

set @preparedstmt = concat('SELECT tid, LENGTH(message) len FROM ? where tid=? and first=1');
prepare stmt from prepared_stmt;
execute stmt using v_tid;
drop prepare stmt;

テーブル名に注意してください。プレースホルダーに置き換えるべきではありません。そのため、@preparedstmt を concat メソッドで生成してステートメントを作成する必要があります。これは、条件内のパラメーターをプレースホルダーに置き換えるだけで、テーブル名には置き換えられません。

于 2011-09-28T08:03:54.397 に答える