我想创建一个内部具有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 $$
提前感谢任何输入。
答案 0 :(得分:3)
而不是stmt varchar(255)
使用@stmt:
...
DECLARE datereg DATETIME;
SET @stmt = concat(
'SELECT dateT FROM', dbTable, 'ORDER BY dateT DESC LIMIT 1');
....