我希望有人能帮助我。我想找回所有已更新的行,并在此论坛中找到了一些东西。但是现在我创建了一个“ PROCEDURE”,并希望将Update语句与所需的其他语句组合为String,并使用“ PREPARE”语句执行String。但是由于某些原因,这是行不通的。查询(不是字符串)本身可以工作。
有人可以帮助我吗?
DELIMITER $$
DROP PROCEDURE IF EXISTS updateAndGetUpdatedRows$$
CREATE PROCEDURE updateAndGetUpdatedRows (IN query varchar(255))
BEGIN
SET @buffer = CONCAT_WS(' ','SET @uids := null;',query,'AND ( SELECT @uids := CONCAT_WS(",", ID, @uids) );','SELECT @uids;');
PREPARE stmt FROM @buffer;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END$$
DELIMITER ;
call updateAndGetUpdatedRows('UPDATE expensesData SET value = 22 WHERE ID = 64');
系统:
innodb_version:5.5.55-MariaDB-38.8
protocol_version:10
slave_type_conversions
版本:5.5.57-MariaDB
version_comment:MariaDB服务器
version_compile_machine:x86_64
version_compile_os:Linux
答案 0 :(得分:0)
由于P.Salmon,我知道了。解决方法如下:
DELIMITER $$
DROP PROCEDURE IF EXISTS updateAndGetUpdatedRows$$
CREATE PROCEDURE updateAndGetUpdatedRows (IN query varchar(255))
BEGIN
SET @uids := null;
SET @buffer = CONCAT_WS(' ',query,'AND ( SELECT @uids := CONCAT_WS(",", ID, @uids) );');
PREPARE stmt FROM @buffer;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SELECT @uids;
END$$
DELIMITER ;