Гость
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / в чем проблема? / 10 сообщений из 10, страница 1 из 1
02.10.2003, 09:12
    #32281420
Lefan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
в чем проблема?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
create procedure probSQLCountRowsInTest (out res int)
   result sets  1 
   language SQL
begin
   declare v_count int default  0 ;
   declare v_num int default  0 ;   

   declare c1 cursor for
      select * from test;
	  
   declare exit handler for not found
      set res = - 1 ;
	  
   set res =  0 ;
   select count(*) into count from test; 
   
   open c1;
   while num < count do
      set res = res +  1 ;
   end while;
   
   close c1;  	  	   
end

Ошибка:
[IBM][CLI Driver][DB2/NT] SQL0104N An unexpected token "END-OF-STATEMENT"
was found following "_count int default 0". Expected tokens may
include: "<psm_semicolon>". SQLSTATE=42601


в доке описана как:
Символ, элемент или условие недопустимы или пропущены

первые 7 строчек один к одному как в примере из доки...

С уважением Алексей.
...
Рейтинг: 0 / 0
02.10.2003, 10:36
    #32281530
NewYear
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
в чем проблема?
прблема в том, что символ ";" является разделителем как в SLP, так и в sql процессоре. используй другоу разделитель в sql процессоре, чтобы решить эту проблему.
...
Рейтинг: 0 / 0
02.10.2003, 10:36
    #32281533
NewYear
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
в чем проблема?
SPL естественно, не SLP
...
Рейтинг: 0 / 0
02.10.2003, 10:37
    #32281535
Lefan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
в чем проблема?
это вдь совсем просто...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
create procedure probSQLCountRowsInTest (out res int)
   result sets  1 
   language SQL
BEGIN
   declare c1 cursor for
      select * from test;
   open c1;
end

[IBM][CLI Driver][DB2/NT] SQL0104N An unexpected token "END-OF-STATEMENT"
was found following "lect * from test". Expected tokens may
include: "JOIN <joined_table>". SQLSTATE=42601


Совсем нисего не понимаю... :(
...
Рейтинг: 0 / 0
02.10.2003, 10:55
    #32281577
Lefan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
в чем проблема?
в Quest Centre поменял на "|" и в Сommand Centre тоже, все равно лезут ошибки...

QuestCenter:
[IBM][CLI Driver][DB2/NT] SQL0104N An unexpected token "END-OF-STATEMENT" was
found following "lect * from test". Expected tokens may include:
"JOIN <joined_table>". SQLSTATE=42601


Command Center:
create procedure sav.probSQLCountRowsInTest (out res int) result sets 1 language SQL BEGIN declare c1 cursor for select * from test
DB21034E The command was processed as an SQL statement because it was not a
valid Command Line Processor command. During SQL processing it returned:
SQL0104N
An unexpected token "END-OF-STATEMENT" was found following "lect *
from test".
Expected tokens may include: "JOIN <joined_table>".
SQLSTATE=42601

open c1
DB21028E The cursor "C1" has not been declared.

end
DB21034E The command was processed as an SQL statement because it was not a
valid Command Line Processor command.
During SQL processing it returned:
SQL0104N
An unexpected token "END-OF-STATEMENT" was found following "end".
Expected tokens may include: "JOIN <joined_table>". SQLSTATE=42601

-104


что еще можно сотворить?
...
Рейтинг: 0 / 0
02.10.2003, 10:58
    #32281586
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
в чем проблема?
Да, временами DB2 дает невнятные сообщения, однако, думаю, NewYear уже дал правильный ответ.

Подробнее:

An unexpected token "END-OF-STATEMENT" was found following "lect * from test".

Что у нас следует после "lect * from test"? Точка с запятой.

Разжевываю совсем подробно:

Файл f1.db2.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
connect to ... user ... using ...;
create procedure probSQLCountRowsInTest (out res int)
   result sets  1 
   language SQL
BEGIN
   declare c1 cursor for
      select * from test;
   open c1;
end;


вызываем db2clp db2 -f f1.db2 -vt
и получаем ту же ошибку.

Файл f2.db2.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
connect to ... user ... using ... @
create procedure probSQLCountRowsInTest (out res int)
   result sets  1 
   language SQL
BEGIN
   declare c1 cursor for
      select * from test;
   open c1;
end @


вызываем db2clp db2 -f f2.db2 -vtd@
и не получаем ту же ошибку. (возможно, получаем какую-то другую; например, если нету компилятора C, выругается на отсутствие nmake или что-то в этом роде).

Аналогично в других средствах - завершитель (терминатор) выражения обычно задается в настройках или опциях командной строки.
...
Рейтинг: 0 / 0
02.10.2003, 10:59
    #32281591
Lefan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
в чем проблема?
как я понял, он все равно ";" считает за конец команды...
вроде и проги перегрузил... %(
...
Рейтинг: 0 / 0
02.10.2003, 11:00
    #32281592
riman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
в чем проблема?
Ну, елки - палки... У тебя ругается на все знаки ";" - есть такой прикол в ХП. Нужно определить новый разделитель операторов (например "!"). Кажется это делается с помощью оператора DELIMETER - копай дальше сам.
...
Рейтинг: 0 / 0
02.10.2003, 11:03
    #32281598
riman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
в чем проблема?
Пардон: SET DELIMITER....
...
Рейтинг: 0 / 0
02.10.2003, 11:09
    #32281608
Lefan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
в чем проблема?
да я после NewYear понял в чем проблема, не понятно, почему проги не меняют у себя разделители...

Ладно, всем спасибо, тема закрыта...
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / в чем проблема? / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]