0

「foo」の値に基づいて IDvar を選択し、それらに foo を含む変数名を割り当てるストアド プロシージャがあります。私はこれを行うことができます:

CALL db0.genericStoredProc(IDvar, "foo", "'foo'");

理想的には、私はただ書きたいだけです

CALL db0.genericStoredProc(IDvar, "foo");

bar2 パラメーターが不要になるように、bar を活用するにはどうすればよいですか? これが私のストアドプロシージャの関連部分です。

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 ;
4

1 に答える 1

1


以下のようなローカル変数を使用します

DELIMITER $ $
CREATE PROCEDURE genericStoredProc(myID BIGINT(20) UNSIGNED, bar VARCHAR(5))
BEGIN
DECLARE bar2 VARCHAR(5);
SET bar2=bar1 ;
于 2013-08-24T20:23:47.373 に答える