5

プロシージャで一時テーブルを作成していましたが、常に「テーブルはすでに存在します」というエラーが発生しました。

次に、衝突を避けるためにランダムな名前を作成しようとしましたが、SQL文字列の実行方法について十分に理解していません

SET @tbName = CONCAT('temp', random_id);

PREPARE stmt1 FROM 'CREATE TEMPORARY TABLE ? (`FIELDNAME` float NOT NULL);';
EXECUTE stmt1 using @tbName;
DEALLOCATE PREPARE stmt1;

上記のコードは機能しません。なんで?それを修正する方法は?

4

1 に答える 1

3
 mysql> set @table_name := 'mytable';
 Query OK, 0 rows affected (0.02 sec)

 mysql> set @sql_text:=concat('create table ',@table_name,'(id int unsigned)');
 Query OK, 0 rows affected (0.00 sec)

http://rpbouman.blogspot.com/2005/11/mysql-5-prepared-statement-syntax-and.htmlから

于 2010-01-11T19:51:53.030 に答える