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