Не удается найти хранимую процедуру, даже если она «уже существует» - PullRequest
0 голосов
/ 02 августа 2020

Новое в mysql. Попытка создать хранимую процедуру, которую я видел в этом руководстве: http://www.microshell.com/database/mysql/emulating-nextval-function-to-get-sequence-in-mysql/

Чтобы загрузить процедуру, я запустил:

mysql -u root -pmypassword test_db < path/to/sproc/sequence_next_val.sql

Казалось, работали, поскольку каждый раз, когда я запускаю его, я получаю:

ERROR 1304 (42000) at line 3: FUNCTION nextval already exists

Однако, когда я go в командной строке mysql и делаю:

$ USE test_db
$ CALL nextval('sequence_name');

Я получаю:

ERROR 1305 (42000): PROCEDURE test_db.nextval does not exist

mysql информацию о версии: mysql Ver 8.0.20-0ubuntu0.20.04.1 для Linux на x86_64 ((Ubuntu))

1 Ответ

1 голос
/ 02 августа 2020

Вы создали функцию, и для ее использования вам необходимо SELECT nextval(). Если вы создаете процедуру, вы можете использовать CALL.

См.: https://dev.mysql.com/doc/refman/8.0/en/create-procedure.html

В вашем связанном упражнении он делает это правильно:

SELECT nextval('sq_my_sequence') as next_sequence;

...