Mysql存储过程动态查询

时间:2010-07-09 10:14:14

标签: mysql stored-procedures

我遇到了很多问题,并知道我可以在这里得到一些好的答案!

好的有点2问题。
第1部分我正在进行一些非常大的数据更新,主要是重新调整表格。 所以问题是我应该像正常一样使用mysql存储过程或mysql / php。 我目前正处于存储的生产框架中。 原因是

  • a)更快
  • b)没有超时。

如果有人有任何其他意见,请告诉我。

P.S我们正在谈论一大堆数据。比如超过150万行

第二部分。
在存储过程中,如何进行只返回一行的查询,只给我一行。此外,查询有点动态,如

SET tag_query = concat('SELECT tag_id FROM tags WHERE tag = "',split_string_temp,'"');

任何线索?
我似乎无法找到任何关于这种语言的简单方法!

提前感谢您的帮助。

理查德

2 个答案:

答案 0 :(得分:0)

你的问题有点模糊,所以我只回复你所包含的一段代码。

如果你想从标签名称中获取tag_id,我建议使用存储的函数而不是存储过程。

这样的事情:

DELIMITER $$

DROP FUNCTION IF EXISTS GET_TAG_ID $$

CREATE FUNCTION GET_TAG_ID(P_TAG_NAME varchar(255)) RETURNS int
BEGIN
  DECLARE v_return_val INT;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_return_val = -1;

  IF (P_TAG_NAME IS NULL)
  THEN
    RETURN NULL;
  END IF;

  select tag_id
  into v_return_val
  from TAGS
  where tag = P_TAG_NAME;

  RETURN v_return_val;
END $$

DELIMITER ;

答案 1 :(得分:0)

要更新数据一次(不是常规任务)我更喜欢使用像phpmyadmin这样的gui管理员或直接发出SQL命令的sqlyog(当然还有一个很好的备份!)因为你可以快速看到结果并且不需要担心除了你的主要任务之外的其他事情。