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/

10-10 00:55