Ho fatto questa prova..

codice:
DELIMITER $$

DROP PROCEDURE IF EXISTS `test_proc`$$

CREATE PROCEDURE `test_proc`(parameter VARCHAR(100),data1 date,data2 date)
BEGIN
DECLARE T1 TEXT;
DECLARE T2 TEXT;
DECLARE T3 TEXT;
	SET T1 = CONCAT('SELECT * FROM tbl WHERE ID IN (', parameter, ')');
  SET T2 = " and prezzi(ID,data1,data2)";
  SET T3 = CONCAT(T1,T2);
	SELECT T3;
END$$
DELIMITER ;
e ottengo

SELECT * FROM tbl WHERE ID IN (1,2,3) and prezzi(ID,data1,data2)

però i valori di data1 e data2 vengono gestiti come testo... anzichè come parametri