2016-02-10 3 views
0

Моя реальная хранимая процедура намного сложнее, но DB2 даже не может создать пустую хранимую процедуру, которая абсолютно ничего не делает (поэтому я отправляю эту фиктивную процедуру). Процедура заключается в следующемDB2 не может создать простую хранимую процедуру

CREATE PROCEDURE SIMPLE_DECL_PROC() 
LANGUAGE SQL 
BEGIN 
DECLARE v varchar(16);//the problem is here 
END 

Я получаю следующее сообщение об ошибке:

2:59:31 [CREATE - 0 row(s), 0.000 secs] [Error Code: -104, SQL State: 42601] 
DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=END-OF-STATEMENT;ECLARE v varchar(16);<psm_semicolon>, DRIVER=3.57.82 

ошибки жалуется на заявлении объявляет, хотя я не вижу ничего плохого с ним (попыталось удалить, при конец, но это не сработало).

Если я удалю оператор declare, процедура будет создана успешно.

Я попытался сделать это с помощью DBVisualizer, а также SQL Squirrel.

Я уверен, что это что-то простое, что мне не хватает, но я не могу его найти. Излишне говорить, что я проверил подобные вопросы здесь, на SO и в других местах.

И, наконец, мы используем DB2 9.7.

Благодаря

+0

Что вы установили в качестве терминатора терминалов в своем клиенте? И помните, что это не база данных, а пользователь ... –

+0

Да, я добавил косую черту (/) в конце, и она работала (мне пришлось установить разделитель операторов в клиенте). Кажется, что некоторые клиенты этого не требуют (например, pgAdmin для Postgre, но я думаю, что pgAdmin знает, как справиться с этим для Postgre). Спасибо –

ответ

1

клиенты Большинство SQL позволяют установить так называемое заявление терминатор. Это символ, который находится в конце всего утверждения. По умолчанию большинство клиентов используют точку с запятой (";"). Для хранимых процедур часто необходимо выбрать и установить другой терминатор терминалов. Это связано с тем, что хранимая процедура может включать в себя несколько операторов SQL, которые завершаются, но только для всей хранимой процедуры.

+0

Кстати, я использовал терминатор заявления для Oracle тоже, но почему-то забыл, что это было необходимо. PgAdmin не требует его для Postgre. –

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