最初にテーブルが存在するかどうかを確認しています。存在しない場合は、作成してからデータを挿入します。
DELIMITER $$
DROP PROCEDURE IF EXISTS `myDb`.`InsertData`$$
CREATE DEFINER=`root`@`%` PROCEDURE `InsertData`(
IN _P1 VARCHAR(255),
IN _P2 DATETIME,
IN _P3 TEXT,
IN _TableName VARCHAR(255)
)
BEGIN
DECLARE TableCount INT(1);
SET TableCount = (SELECT COUNT(table_name)
FROM information_schema.tables
WHERE table_schema = 'myDb' AND table_name = _TableName);
IF(TableCount = 0) THEN
SET @s = CONCAT('CREATE TABLE IF NOT EXISTS `myDb`.`',_TableName,'` (
`P1` VARCHAR(255),`P2` DATETIME, `P3` TEXT ;');
PREPARE stmt3 FROM @s;
SELECT stmt3;
EXECUTE stmt3;
END IF;
SET @s = CONCAT('INSERT INTO `myDb`.`',_TableName,'` ( P1, P2, P3)
VALUES (' + _P1 + ',' + _P2 + ',' + _P3 + ')');
PREPARE stmt3 FROM @s;
EXECUTE stmt3;
END$$
DELIMITER ;
プロシージャは正常にコンパイルされますが、実行するとエラーが発生します。
Error Code : 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL
server version for the right syntax to use near '' at line 2