簡體   English   中英

我可以在函數中使用MySQL PREPARE語句來創建具有變量表名的查詢

[英]Can I use a MySQL PREPARE statement in a function to create a query with a variable table name

我想創建一個內部具有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 $$

提前感謝任何輸入。

而不是stmt varchar(255)使用@stmt:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM