使用 MySQL,我尝试创建一个存储过程来检索任何给定表中 varchar 列的最大值。我想将该列的值增加 1,然后用它来存储其他字段。我不希望该列为 int 且自动递增。
我现在拥有的存储过程是
分隔符 $$
use gounicartdb$$
DROP PROCEDURE IF EXISTS sp_getUpdatedIDFromTable$$
CREATE PROCEDURE sp_getUpdatedIDFromTable(
IN tableName varchar(50),
IN columnName varchar(50),
IN incrementValue int/*,
OUT updatedID varchar(10)*/
)
BEGIN
SET @newID = "abc";
SET @cmdString = concat("Select max(", columnName, ") from ", tableName);
PREPARE stmt FROM @cmdString;
SELECT @newID = EXECUTE stmt;
END$$
DELIMITER ;
编译时我没有看到任何错误,但执行该过程时出现以下错误。
14:50:48 Call sp_getUpdatedIDFromTable("user", "SNo", 1) Error Code: 1054. Unknown column 'EXECUTE' in 'field list' 0.000 sec
请帮忙。
您可以在程序中替换
SET @cmdString = concat("Select max(", columnName, ") into @newID from ", tableName);
PREPARE stmt FROM @cmdString;
EXECUTE stmt;
SELECT @newID;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)