Mysql存储过程在获取记录时出现问题

时间:2014-02-06 10:17:36

标签: mysql database mysqli

我有一个数组中的id列表。我想使用这些id来从表“user”中获取详细信息。

我需要一个存储过程,我将发送id的数组,并在返回数组结果中获取每个id的数据。

1 个答案:

答案 0 :(得分:1)

您可以尝试以下方式:

  • A:使用附加表(可能是临时表)来存储过程中需要的ID值,然后将此表连接到另一个表。
  • B:将ID值作为字符串参数传递给procedure,然后构建结果SQL语句,并使用MySQL prepared statements执行它。

示例(案例 A ):

DELIMITER $$
CREATE PROCEDURE procedure1()
BEGIN
  SELECT * FROM table1 t1 JOIN table_id t2 ON t1.id = t2.id;
END$$
DELIMITER ;

CREATE TABLE table_id(id INT(11));
INSERT INTO table_id VALUES(1),(2),(3),(4),(5);

CALL procedure1();

示例(案例 B ):

DELIMITER $$

CREATE PROCEDURE procedure1(IN id_param VARCHAR(255))
BEGIN
  SET @sql = CONCAT('SELECT * FROM table WHERE id IN (', id_param, ')');
  PREPARE stmt FROM @sql;
  EXECUTE stmt;
  DEALLOCATE PREPARE stmt;
END$$

DELIMITER ;

SET @id = '1,2,3,4,5';
CALL procedure1(@id);