加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

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

发布时间:2021-01-31 15:48:36 所属栏目: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');
  ....

(编辑:应用网_丽江站长网)

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

    热点阅读