Oracleと同様EXECUTE IMMEDIATE
に、MySQL ストアド プロシージャでコードを動的に実行する方法はありますか?
ループの各反復で新しい SQL ステートメントを生成するために、MySQL ストアド プロシージャ内でプリペアド ステートメントを使用したいと考えています。
Oracleと同様EXECUTE IMMEDIATE
に、MySQL ストアド プロシージャでコードを動的に実行する方法はありますか?
ループの各反復で新しい SQL ステートメントを生成するために、MySQL ストアド プロシージャ内でプリペアド ステートメントを使用したいと考えています。
実際、私が書いたようには機能しません。私は次のようにコーディングします:
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 メソッドで生成してステートメントを作成する必要があります。これは、条件内のパラメーターをプレースホルダーに置き換えるだけで、テーブル名には置き換えられません。