Не удается создать хранимую процедуру в DB2

#stored-procedures #db2

#хранимые процедуры #db2

Вопрос:

Я пытаюсь создать хранимую процедуру в DB2, используя IBM DB2 Cloud. Я получаю ошибку как:

После «» был обнаружен неожиданный токен ‘END-OF-STATEMENT’.

Подробная информация об ошибке приведена на скриншоте ниже.

Нажмите здесь, чтобы получить скриншот ошибки

 CREATE PROCEDURE trial_pro(in msg varchar(100))
language sql;
BEGIN
    insert into collision values(msg);;
END
  

Ответ №1:

Прежде всего:

  • Там «;» за языком sql стоит ошибка.
  • Два «;» после строки со вставкой не имеют смысла и не совпадают со снимком экрана.

В дополнение к этому: Хотя «;» является ограничителем инструкции внутри вашей хранимой процедуры, обязательно выберите (настройте) другую инструкцию для (внешней) инструкции create procedure. Обычно инструменты, с помощью которых вы запускаете SQLS, предлагают возможность ее изменения.

Ответ №2:

Вы должны изменить завершитель инструкции по умолчанию ( ; ), если вы используете составную инструкцию.
В консоли DSM вы можете сделать это либо временно для какой-либо конкретной инструкции:

 --#SET TERMINATOR @
CREATE PROCEDURE trial_pro(in msg varchar(100))
language sql
BEGIN
    insert into collision values(msg);
END@
--#SET TERMINATOR ;
  

или установить ее по умолчанию с помощью:

Editor options (значок шестеренки в правом верхнем углу) -> Завершитель инструкции -> @