gpt4 book ai didi

mysql - mysql 中的过程内部函数

转载 作者:行者123 更新时间:2023-11-29 20:49:20 26 4
gpt4 key购买 nike

DELIMITER //
DROP PROCEDURE IF EXISTS test1 //

CREATE PROCEDURE test1(IN param VARCHAR(50),IN field VARCHAR(50), OUT res VARCHAR(50))
BEGIN

set @table_name=param;
set @c2=field;
SET @t1 =CONCAT( 'SELECT MAX(@c2) into @res FROM ', @table_name);

PREPARE stmt1 FROM @t1;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
SET res=@t1;
END //

DELIMITER ;

调用方法:

CALL test1('tblabc','id', @result);
SELECT @result;

我在 MySQL 中创建了一个过程,但 MAX 函数不起作用。有什么解决方案或替代方案吗?它给我列名而不是最大值。

最佳答案

您需要能够在语句中分配变量,但使用 := 而不是 into。此外,您不能使用表名或列名作为参数。他们需要直接进入字符串:

CREATE PROCEDURE test1(
IN in_param VARCHAR(50),
IN in_field VARCHAR(50),
OUT out_res VARCHAR(50)
)
BEGIN
SET @sql =CONCAT('SELECT @res := MAX(', in_field, ') FROM ', in_param);

PREPARE stmt1 FROM @sql;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
SET out_res = @res;
END;//

DELIMITER ;

关于mysql - mysql 中的过程内部函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38184112/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com