MySQL 存储过程无法使用多个参数


MySQL Stored Procedure not working with multiple parameters

我有一个mysql存储过程,只需一个输入,效果很好。现在我需要两个输入,但它不起作用,我无法弄清楚出了什么问题。

这是我的商店程序:

CREATE DEFINER=`multilager`@`localhost` PROCEDURE `lagerbeholdning_alle`(IN `bruker_gruppe` INT, IN `bruker_gruppe2` INT)
BEGIN
  SET @sql = NULL;
  SELECT GROUP_CONCAT(DISTINCT
           CONCAT('SUM(CASE WHEN lagerbeholdning.lok_id = ', lagerbeholdning.lok_id,
                  ' THEN antall END) `', lagerbeholdning.lok_id, '`'))
    INTO @sql
    FROM lagerbeholdning
    INNER JOIN lokasjoner ON lagerbeholdning.lok_id = lokasjoner.lok_id
    WHERE bruker_gruppe_ref = bruker_gruppe;
  SET @sql = CONCAT('SELECT produkt_id, prod_navn, kat_navn, size_navn, farge_navn, prod_bilde, ', @sql, ' 
                     FROM lagerbeholdning
                     INNER JOIN produkter ON produkt_id = prod_id
                     INNER JOIN produkt_kategorier on prod_kat_id = kat_id
                     INNER JOIN produkt_sizes on prod_size_id = size_id
                     INNER JOIN produkt_farger on prod_farge_id = farge_id
                     WHERE produkter.prod_bruker_gruppe = bruker_gruppe2
                     GROUP BY produkt_id');
  PREPARE stmt FROM @sql;
  EXECUTE stmt;
  DEALLOCATE PREPARE stmt;
END

如果我调用该过程:

CALL lagerbeholdning_alle(3,3)

我收到以下错误:

Error: Unknown column 'bruker_gruppe2' in 'where clause'

如何在最后一个 where 子句中使用 bruker_gruppe2 参数?

CONCAT会将其视为普通文本,并将其传递给查询而不替换为值。

SET @sql = CONCAT('SELECT produkt_id, prod_navn, kat_navn, size_navn, farge_navn, prod_bilde, ', @sql, ' 
       FROM lagerbeholdning
       INNER JOIN produkter ON produkt_id = prod_id
       INNER JOIN produkt_kategorier on prod_kat_id = kat_id
       INNER JOIN produkt_sizes on prod_size_id = size_id
       INNER JOIN produkt_farger on prod_farge_id = farge_id
       WHERE produkter.prod_bruker_gruppe = ', bruker_gruppe2, '
       GROUP BY produkt_id');

现在应该正确更换它。