Я пытаюсь написать функцию MySql, я передал имя таблицы, используемое в выражении select, это код игрушки, объясняющий проблему, с которой я сталкиваюсь. [Примечание: я не хочу использовать процедуры!]Пропустить имя столбца в качестве параметра для функции MySql
DROP FUNCTION IF EXISTS `P_AVG`;
DELIMITER $$
CREATE FUNCTION P_AVG(tblName CHAR(64)) RETURNS INT
BEGIN
DECLARE cnt INT;
SELECT COUNT(*) INTO cnt FROM tblName;
return cnt;
END$$
DELIMITER ;
И тогда я пытаюсь выполнить следующую
SELECT P_AVG("PARTSUPP");
Я получаю следующую ошибку
ОШИБКА 1146 (42S02) : Таблица 'phpmyadmin.tblName' не существует
он выдаст следующую ошибку ОШИБКА 1064 (42000): У вас ошибка в вашем SQL синтаксиса; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с 'DYNAMIC_QUERY; –
o.O another: ERROR 1336 (0A000): динамический SQL не разрешен в сохраненной функции или триггера –
Затем вам нужно записать его как хранимую процедуру. «ПРОЦЕДУРА» вместо «ФУНКЦИЯ». – SarathChandra