Ошибка с процедурами mysql. ERROR 1304 & ERROR 1305

Вопрос:Я новичок в использовании процедур и, похоже, не могу работать на моем компьютере. Я использую MySQL v5.1.36 и вводя свой код с помощью консоли MySQL на сервере WAMPP. Если я перейду к (повторной) процедуре создания. Я получаю ошибку # 1304 (42000). mysql> DELIMITER // mysql> mysql> CREATE PROCEDURE modx.getCRID (IN x VARCHAR(255),OUT y INT) ->

Вопрос:

Я новичок в использовании процедур и, похоже, не могу работать на моем компьютере. Я использую MySQL v5.1.36 и вводя свой код с помощью консоли MySQL на сервере WAMPP. Если я перейду к (повторной) процедуре создания. Я получаю ошибку # 1304 (42000).

mysql> DELIMITER // mysql> mysql> CREATE PROCEDURE modx.getCRID (IN x VARCHAR(255),OUT y INT) -> BEGIN -> DECLARE y INT; -> SELECT id INTO y -> FROM `modx`.coverage_region -> WHERE `coverage_region`.name = x; -> END// ERROR 1304 (42000): PROCEDURE getCRID already exists mysql> mysql> DELIMITER ;

Однако, если я попытаюсь использовать процедуру, я получаю ошибку # 1305 (42000).

mysql> USE modx; Database changed mysql> SET @crID = modx.getCRID(«South East»); ERROR 1305 (42000): FUNCTION modx.getCRID does not exist

Если процедура существует для одного, как она не может существовать для другого? Что я делаю неправильно.

Лучший ответ:

Я считаю, что проблемы

  • Первая ошибка возникает из-за того, что вы пытаетесь воссоздать существующую процедуру. Если вы сначала должны отказаться от процедуры, вы не получите эту ошибку,
  • Вторая ошибка заключается в том, что ПРОЦЕДУРЫ вызывается с помощью инструкций CALL, а FUNCTIONs вызывается как ссылки на функции, как в вашем коде. Вы должны определить FUNCTION, а не ПРОЦЕДУРА. (Документация MySQL) говорит:

Операция CREATE FUNCTION также используется в MySQL для поддержки UDF (пользовательские функции). См. Раздел 21.2, “Добавление новых функций в MySQL”. UDF можно рассматривать как внешний хранимая функция. Сохраненные функции поделитесь своим пространством имен с UDF. Видеть Раздел 8.2.3, “Обозначение имени функции” и Резолюция “, для правил описание интерпретации сервера ссылки на различные виды функции.

Чтобы вызвать хранимую процедуру, используйте CALL (см. Раздел 12.2.1,” Синтаксис вызова”). Чтобы вызвать сохраненный функции, обратитесь к нему в выражение. Функция возвращает значение во время оценки выражения.

Оцените статью
Добавить комментарий