【发布时间】:2018-06-21 06:24:29
【问题描述】:
我希望有人可以帮助我。我想取回所有更新的行,我在这个论坛中找到了一些东西。但现在我创建了一个“PROCEDURE”,并希望将 Update 语句与所需的其他语句组合为字符串,并使用“PREPARE”语句执行该字符串。但由于某些原因,这不起作用。查询(不是字符串)本身可以工作。
有人可以帮助我吗?
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
协议版本:10
slave_type_conversions
版本:5.5.57-MariaDB
version_comment:MariaDB 服务器
version_compile_machine:x86_64
version_compile_os: Linux
【问题讨论】:
-
你只能将1条语句传递给sql。
-
谢谢它帮助我 :-) 我改变了它,现在它可以工作了。
标签: mysql prepared-statement mariadb