【问题标题】:MariaDB pass aggregate function name as stored procedure parameterMariaDB 将聚合函数名称作为存储过程参数传递
【发布时间】:2023-03-20 20:58:01
【问题描述】:

我正在编写存储过程,它获取 聚合函数名列名 作为参数并返回值(例如:('sum','age') 返回值of (SELECT SUM(age) FROM myTable))

我的代码:

CREATE PROCEDURE sample (IN name VARCHAR(10), IN col VARCHAR(30), OUT result INT) 
BEGIN
    SELECT CONCAT( name , '(', col, ') ') INTO result FROM myTable;
END$

【问题讨论】:

  • 谷歌搜索“mysql 准备好的语句”...

标签: sql database stored-procedures mariadb aggregate-functions


【解决方案1】:

将其设为FUNCTION

return CONCAT('SELECT ', name, '(', col, ') FROM myTable;');

【讨论】:

    【解决方案2】:

    使用Prepared Statements

    CREATE PROCEDURE sample (IN name VARCHAR(10), IN col VARCHAR(30), OUT result INT) 
    BEGIN
        SET @sql := '';
        SET @ret := 0;
    
        SELECT CONCAT('SELECT ', name,  '(', col, ') INTO @ret FROM myTable') INTO @sql FROM DUAL;
        PREPARE STMT from @sql;
        EXECUTE STMT;
    
        SELECT @ret INTO result FROM DUAL;
    
        DEALLOCATE PREPARE STMT;     
    END
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-19
      • 2015-07-09
      • 1970-01-01
      • 1970-01-01
      • 2010-10-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多