加入收藏 | 设为首页 | 会员中心 | 我要投稿 济南站长网 (https://www.0531zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

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

发布时间:2021-02-01 06:26:09 所属栏目:MySql教程 来源:网络整理
导读:我想创建一个内部具有选择查询的函数,该函数可用于多个数据库表,但不能将变量用作表名.我可以使用函数中的PREPARE语句解决此问题吗? 一个例子: FUNCTION `TESTFUNC`(dbTable VARCHAR(25)) RETURNS bigint(20)BEGIN DECLARE datereg DATETIME; DECLARE st

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

(编辑:济南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读