Имена динамических таблиц в функции хранимых процедур

Мы написали функцию хранимой процедуры, чтобы получить имя из таблицы. Проблема в том, что я хочу, чтобы имя таблицы передавалось как параметр (есть несколько разных таблиц, с которыми мне нужно использовать эту функцию):

DELIMITER $

CREATE DEFINER=`root`@`localhost` FUNCTION `getName`(tableName VARCHAR(50), myId INT(11)) RETURNS VARCHAR(50)

  begin

  DECLARE myName VARCHAR(50);

  SELECT
    'name' INTO myName
  FROM
    tableName
  WHERE 
    id=myId;

  RETURN myName;

  end

Этот метод имеет ошибку, потому что он использует имя переменной "TABLENAME» вместо фактического значения переменной.

Я могу обойти эту проблему впроцедура используяCONCAT как это:

    SET @GetName = CONCAT("
    SELECT
       'name'
    FROM
        ",tableName,"
    WHERE 
        id=",myId,";
    ");

    PREPARE stmt FROM @GetName;
    EXECUTE stmt;

... но, когда я пытаюсь сделать это в функции, я получаю сообщение:

Динамический SQL не разрешен в хранимой функции или триггере

Я пытался использоватьпроцедура вместо этого, но я не могполучить его просто вернуть значение, как это делает функция.

Итак, кто-нибудь может увидеть способ обойти эту проблему. Это кажется невероятно простым на самом деле.

Ответы на вопрос(2)

Ваш ответ на вопрос