MySQL存储过程中的参数最小化

MySQL存储过程中的参数最小化,mysql,stored-procedures,parameters,Mysql,Stored Procedures,Parameters,我有一个存储过程,它根据'foo'的值选择IDvars,并为它们指定包含foo的变量名。我可以这样做: CALL db0.genericStoredProc(IDvar, "foo", "'foo'"); 理想情况下,我只想写作 CALL db0.genericStoredProc(IDvar, "foo"); 如何利用bar,使我不需要bar2参数? 以下是存储过程的相关部分 DROP PROCEDURE IF EXISTS genericStoredProc; DELIMITER $ $

我有一个存储过程,它根据'foo'的值选择IDvars,并为它们指定包含foo的变量名。我可以这样做:

CALL db0.genericStoredProc(IDvar, "foo", "'foo'");
理想情况下,我只想写作

CALL db0.genericStoredProc(IDvar, "foo");
如何利用bar,使我不需要bar2参数? 以下是存储过程的相关部分

DROP PROCEDURE IF EXISTS genericStoredProc;
DELIMITER $ $
CREATE PROCEDURE genericStoredProc(myID BIGINT(20) UNSIGNED, bar VARCHAR(5), bar2 VARCHAR(5))
BEGIN
SET @s = CONCAT('SELECT gt.name, gt.junk, gt.junkName, count(gt.idvar) as id_count,
        SUM(CASE 
            WHEN ot.offset <0 THEN 1 
            ELSE 0
        END) AS ', bar,'_id_count
    FROM genericTable gt
        LEFT JOIN otherTable ot ON gt.IDvar2 = ot.IDvar
    WHERE (gt.idvar = ', IDvar, ') AND (ot.prmtr = ', bar2, ')
GROUP BY gt.idvar');

PREPARE stmt FROM @s;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END $$
DELIMITER ;
如果存在genericStoredProc,则删除过程;
分隔符$$
创建过程genericStoredProc(myID BIGINT(20)UNSIGNED,bar VARCHAR(5),bar 2 VARCHAR(5))
开始
设置@s=CONCAT('选择gt.name、gt.junk、gt.junkName、count(gt.idvar)作为id\u count,
总数(例)
当ot.offset使用局部变量时
如下

DELIMITER $ $
CREATE PROCEDURE genericStoredProc(myID BIGINT(20) UNSIGNED, bar VARCHAR(5))
BEGIN
DECLARE bar2 VARCHAR(5);
SET bar2=bar1 ;

我仍然有一些问题。这意味着我真正的问题是如何在where子句中将foo识别为“foo”。查询:调用genericStoredProc(IDvar,“foo”)错误代码:“where子句”中的1054未知列“foo”执行时间:0秒传输时间:0秒总时间:3.916秒,而不是(myID BIGINT(20)UNSIGNED,bar VARCHAR(5))使用(在myID BIGINT(20)中为无符号,在bar VARCHAR(5)中为)