powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / И опять DB2 v9 - издевательство или изменение синтаксиса?
4 сообщений из 4, страница 1 из 1
И опять DB2 v9 - издевательство или изменение синтаксиса?
    #34185989
Nafigator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Беру из примера UDF:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE FUNCTION FN_LEAST(v1 INT,v2 INT)
RETURNS INTEGER
MODIFIES SQL DATA
LANGUAGE SQL
BEGIN ATOMIC
DECLARE v3 INT;
CALL smallest(v1,v2,v3);
RETURN v3;
END

Выдает ошибки:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
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 "INT" was found following "IN ATOMIC DECLARE 
v3".  Expected tokens may include:  "END-OF-STATEMENT".  LINE NUMBER=6.  
SQLSTATE=42601

CALL smallest(v1,v2,v3)
SQL0206N  "V1" is not valid in the context where it is used.  SQLSTATE=42703

RETURN v3
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 "RETURN 
v3".  Expected tokens may include:  "JOIN <joined_table>".  SQLSTATE=42601

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

SQL0104N  An unexpected token "END-OF-STATEMENT" was found following "END".  Expected tokens may include:  "JOIN <joined_table>                              ".


Честно говоря, замучился уже. Клиент ставить 8-ю версию не хочет, так что хотелось бы знать: в 9-й изменен синтаксис, это мои глюки или что-то другое??

Я уже кучу примеров брал, в т.ч. из документации на сайте ibm, и всегда в функциях, где есть блок BEGIN ATOMIC - ошибки. Если удается обойтись одним RETURN - функции создаются без проблем...
...
Рейтинг: 0 / 0
И опять DB2 v9 - издевательство или изменение синтаксиса?
    #34186473
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Измените statement termination character с ';' на '@' и попробуйте
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
CREATE FUNCTION FN_LEAST(v1 INT,v2 INT)
RETURNS INTEGER
MODIFIES SQL DATA
LANGUAGE SQL
BEGIN ATOMIC
DECLARE v3 INT;
CALL smallest(v1,v2,v3);
RETURN v3;
END@
...
Рейтинг: 0 / 0
И опять DB2 v9 - издевательство или изменение синтаксиса?
    #34189748
Nafigator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изменил.
Попробовал снова. По-моему, ничего не изменилось...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
CREATE FUNCTION FN_LEAST(v1 INT,v2 INT)
RETURNS INTEGER
MODIFIES SQL DATA
LANGUAGE SQL
BEGIN ATOMIC
DECLARE v3 INT
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 "INT" was found following "IN ATOMIC DECLARE 
v3".  Expected tokens may include:  "END-OF-STATEMENT".  LINE NUMBER= 6 .  
SQLSTATE= 42601 

CALL smallest(v1,v2,v3)
SQL0206N  "V1" is not valid in the context where it is used.  SQLSTATE= 42703 

RETURN v3
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 "RETURN 
v3".  Expected tokens may include:  "JOIN <joined_table>".  SQLSTATE= 42601 

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 

SQL0104N  An unexpected token "END-OF-STATEMENT" was found following "END@".  Expected tokens may include:  "JOIN <joined_table>                             ".
...
Рейтинг: 0 / 0
И опять DB2 v9 - издевательство или изменение синтаксиса?
    #34189837
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изменится, когда вы поймёте, что такое statement termination character и где оно задаётся.

(маленькое поле ввода внизу слева в GUI

или -td@ в командной строчке
db2cmd db2 -f файл -v -td@
)
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / И опять DB2 v9 - издевательство или изменение синтаксиса?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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