Пользовательская функция MySQL - не может передать параметры вниз - PullRequest
0 голосов
/ 08 марта 2012

в качестве заголовка.вот функция

DELIMITER //
CREATE FUNCTION GetCreateValue( table_name CHAR(64), id_field CHAR(64), name_field CHAR(64), name_value CHAR(64) )
RETURNS INTEGER
BEGIN
    DECLARE ret INTEGER;
    SELECT count(*) INTO ret FROM table_name WHERE name_field = name_value;
    IF ret < 1 THEN
        INSERT INTO table_name SET name_field = name_value;
        SELECT id_field INTO ret FROM table_name WHERE name_field = name_value;
    ELSE    
        SELECT id_field INTO ret FROM table_name WHERE name_field = name_value;
    END IF;
    RETURN ret;
END//
DELIMITER ;

, когда я запускаю что-то вроде

SELECT GetCreateValue('table1', 'ID', 'name', '123456');

Я получаю сообщение об ошибке, что таблица "имя_таблицы" не существуетОчевидно, что параметр не был передан.Почему?

1 Ответ

0 голосов
/ 08 марта 2012
SET @qry = 
   CONCAT(
     'SELECT count(*) INTO ret FROM ', table_name, 
      ' WHERE ', name_field, 
      ' = ?');

PREPARE stmt1 FROM @qry;
SET @v = name_value;
EXECUTE stmt1 USING @v;
DEALLOCATE PREPARE stmt1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...