从mariaDb中的表中选择最大记录的函数

pdtvr36n  于 4个月前  发布在  其他
关注(0)|答案(1)|浏览(48)

我需要在mariaDb数据库中创建一个函数,它将接受两个参数,表的名称和列的名称,并应返回给定表中该字段的最高值。

DELIMITER // 
CREATE FUNCTION `getMax`(`cTable` VARCHAR(255), `cColumn` VARCHAR(255)) 
RETURNS INT DETERMINISTIC
BEGIN
    DECLARE nMax INT;
    SET nMax = 0;
    SELECT MAX(`cColumn`) INTO nMax FROM `cTable`;
    RETURN nMax;
END; //
DELIMITER ;

字符串
我正在创建函数,但当我使用它时,我得到以下错误:

Erro SQL (1146): Table 'db.cTable' doesn't exist


如何将参数名替换为select中的值?

slmsl1lt

slmsl1lt1#

你需要一个存储过程来做这件事,因为我们不能在函数中使用dynamixc sql。

DELIMITER $$
drop procedure if exists getMax_sp$$
CREATE procedure getMax_sp(cTable VARCHAR(255), cColumn VARCHAR(255), out nMax int)
BEGIN
    SET @SQL= concat('select max(', cColumn, ') INTO @nMax from ', cTable);
    PREPARE stmt FROM @SQL;
    EXECUTE stmt;
    set nMax=@nMax;
END $$
DELIMITER ;

字符串
使用它:

call getMax_fn('MyTableName', 'MyColumnName', @MaxN);
select @MaxN;

相关问题