Динамически добавлять значения в хранимую процедуру - PullRequest
0 голосов
/ 09 февраля 2019

В настоящее время я изучаю MySQL и пытаюсь выяснить, как динамически кодировать входные значения.

DELIMITER //

CREATE PROCEDURE add_user(
IN username VARCHAR (16),
IN pass VARCHAR (255),
IN email VARCHAR(255),
IN fname VARCHAR (32),
IN lname VARCHAR (32),
IN age INT )

BEGIN

INSERT INTO users (username, pass, email, fname, lname, age)

VALUES (@username, @pass, @email, @fname, @lname, @age);

INSERT INTO usershobbies (u_id, h_id)

VALUES (LAST_INSERT_ID(), '1');

END; //

DELIMITER ;

Когда я вызываю процедуру и вставляю значения, я получаю сообщение об ошибке:

call add_user('bugsbunny', 'Carrot1000', 'bugs@bunny.com', 'Bugs','Bunny', '80');

# 1054 - Неизвестный столбец 'age' в 'списке полей'

Я благодарен за любые отзывы.Спасибо!

1 Ответ

0 голосов
/ 09 февраля 2019

Эта ошибка говорит о том, что в таблице users нет столбца age.Вам необходимо проверить определение вашей таблицы (которую вы не указали в своем вопросе).

Кроме того, при использовании параметров ввода / вывода в MySQL вы не должны ставить перед ними префикс @.Я хотел бы дать им префикс строки (например, p_), что делает неоднозначным от других литеральных строк, таких как имена столбцов:

CREATE PROCEDURE add_user(
    IN p_username VARCHAR (16),
    IN p_pass VARCHAR (255),
    IN p_email VARCHAR(255),
    IN p_fname VARCHAR (32),
    IN p_lname VARCHAR (32),
    IN p_age INT 
)    
BEGIN

    INSERT INTO users (username, pass, email, fname, lname)
        VALUES (p_username, p_pass, p_email, p_fname, p_lname);

    INSERT INTO usershobbies (u_id, h_id) VALUES (LAST_INSERT_ID(), '1');
END;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...