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

前端之家收集整理的这篇文章主要介绍了我可以在函数中使用MySQL PREPARE语句来创建具有可变表名的查询吗 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我想创建一个内部具有选择查询函数,该函数可用于多个数据库表,但不能将变量用作表名.我可以使用函数中的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 $$

预先感谢您的任何投入.

最佳答案
代替stmt varchar(255)使用@stmt:

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

猜你在找的MySQL相关文章