1
CREATE PROCEDURE update_table(
    IN choice INT(4), 
    IN id VARCHAR(50), 
    IN string VARCHAR(50) 
) 
BEGIN 
UPDATE salesman 
set salesman_name = IF(choice = 1, string, salesman_name) 
where salesman_id = id 
UPDATE salesman 
set date = IF(choice = 2, string, date) 
where salesman_id = id 
END 

если choice является 1, изменение salesman_name в stringMySQL различные обновления строки в зависимости от переменной (хранимой процедуры)

если choice является 2, дата изменения в string

вы можете объяснить мне, что я «Неправильно?

он отлично работает с одним update, я думаю, есть другой способ реализовать, если бы я не мог.

if choice = 1 then 
update salesman set salesman_name = string where salesman_id = id 

... Я тоже пробовал эту версию, но все же не работал.

DELIMITER // 
CREATE PROCEDURE update_table(
    IN choice INT(4), 
    IN id VARCHAR(50), 
    IN string VARCHAR(50) 
) 
BEGIN 
UPDATE salesman set salesman_name = IF(choice = 1, string, salesman_name) where salesman_id = id; 
UPDATE salesman set date = IF(choice = 2, string, date) where salesman_id = id; 
END // 
DELIMITER ; 

У вас возникла ошибка в синтаксисе SQL; проверьте руководство, которое соответствует версии сервера MySQL для правильного синтаксиса, чтобы использовать вблизи «DELIMITER» в строке 1

также говорит, что это:

ОШИБКА: Неизвестная пунктуация строка @ 11 (последняя строка)

+0

Вы используете интерфейс редактора процедур в phpMyAdmin для этого? Что вы выбрали в текстовом поле для разделителя? –

ответ

0

Если хранимая процедура имеет более одного оператора, они должны быть завершены;

Для этого вам необходимо временно изменить разделитель, чтобы завершить процедуру. Вот ответ SO с примером того, как это сделать: MySQL create stored procedure syntax with delimiter

+0

Он, похоже, не говорит о синтаксической ошибке 1065. Он? Опять же, может быть, он и есть. Все это слишком расплывчато. – Drew

+0

да, я. он говорит синтаксическую ошибку, когда начинается второе обновление (строка 10), я тоже пробовал ее с разделителем. теперь синтаксическая ошибка для 'DELIMITER $$' –

+0

только что выяснила, что процедура фактически работает при вызове с 'CALL' ... ошибка для последней строки (когда разделитель установлен на«; »снова) –

Смежные вопросы