我可以在函数中使用MySQL PREPARE语句来创建具有变量表名的查询

时间:2010-06-16 21:47:20

标签: mysql

我想创建一个内部具有select查询的函数,该函数可以用于多个数据库表,但我不能使用变量作为表名。我可以使用函数中的PREPARE语句解决这个问题吗?

一个例子:

FUNCTION `TESTFUNC`(dbTable VARCHAR(25)) RETURNS bigint(20)
BEGIN

    DECLARE datereg DATETIME;
    DECLARE stmt VARCHAR(255);

    SET stmt := concat(
      'SELECT dateT FROM', dbTable, 'ORDER BY dateT DESC LIMIT 1');

    PREPARE stmt FROM @stmt;

    EXECUTE stmt;

    RETURN dateT;

END $$

提前感谢任何输入。

1 个答案:

答案 0 :(得分:3)

而不是stmt varchar(255)使用@stmt:

...
 DECLARE datereg DATETIME;
  SET @stmt = concat(
  'SELECT dateT FROM', dbTable, 'ORDER BY dateT DESC LIMIT 1');
  ....