DELIMITER //
DROP PROCEDURE IF EXISTS updateMachine //
CREATE PROCEDURE updateMachine
( IN inID VARCHAR(32), IN inName VARCHAR(32), IN inMode VARCHAR(32), IN inEPIDType TINYINT
, IN inISOCenter FLOAT, IN inSSD FLOAT, IN inScale TINYINT, IN inWidth FLOAT, IN inHeight FLOAT, IN inIsBuild TINYINT)
BEGIN
DECLARE FLAG INT;
SET FLAG = 0;
IF inMode != '' THEN
IF !EXISTS(SELECT ID FROM Evivo.Machine WHERE ID = inMode) THEN
SELECT -1, 'MachineMode doesn\'t exists';
SET FLAG = -1;
END IF;
END IF;
UPDATE Evivo.Machine SET
Name = inName, Mode = inMode, EPIDType = inEPIDType, ISOCenter = inISOCenter
, SSD = inSSD, Scale = inScale, Width = inWidth, Height = inHeight, IsBuild = inIsBuild WHERE ID = inID;
END //
DELIMITER
;
在Qt中用QSqlQuery类中的方法.next()指向Select返回结果,然后根据下标即可读取数据库当前记录。所以当在C++中嵌套了Sql语句时,应该使用Select语句向调用函数返回常值记录确认SQL是否达到预期结果而不是单纯语法执行通过。