MySqlConnector.ExecSql(SqlScript.Text);是我的代码行。
SqlScript.Text加载有
CREATE TABLE IF NOT EXISTS timecard.VersionControl (
`Table` varchar(30) NOT NULL,
`Version` DECIMAL NOT NULL,
PRIMARY KEY (`Table`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP PROCEDURE IF EXISTS timecard.UpdateVersionControl;
DELIMITER $$
CREATE DEFINER = 'root'@'localhost'
PROCEDURE timecard.UpdateVersionControl(IN `Tab` VARCHAR(30), IN `Ver` DECIMAL)
BEGIN
if EXISTS(SELECT * FROM timecard.VersionControl WHERE `Table` = Tab) THEN
UPDATE timecard.VersionControl SET `Version`=Ver WHERE `Table`=Tab;
else
INSERT INTO timecard.VersionControl (`Table`, `Version`) VALUES (Tab, Ver);
END IF;
END$$
DELIMITER ;
我无法从IDE中获得错误代码,无法知道脚本失败的位置。
如果我在MySql工作台中运行脚本,则效果很好。
如果将表创建作为一个脚本运行,然后将过程作为一个单独的脚本运行,则运行良好。
为什么我不能作为一个ExecSql脚本运行?
最佳答案
TFDConnection.ExecSQL允许执行一个SQL命令。但是您尝试执行SQL脚本。为此,您应该使用TFDScript:
http://docwiki.embarcadero.com/RADStudio/Seattle/en/Executing_SQL_Scripts_(FireDAC)
关于mysql - FireDac MySql Connector.ExecSql无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36356730/