Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / И опять DB2 v9 - издевательство или изменение синтаксиса? / 4 сообщений из 4, страница 1 из 1
08.12.2006, 13:08
    #34185989
Nafigator
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И опять DB2 v9 - издевательство или изменение синтаксиса?
Беру из примера 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
08.12.2006, 14:53
    #34186473
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И опять DB2 v9 - издевательство или изменение синтаксиса?
Измените 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
11.12.2006, 12:21
    #34189748
Nafigator
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И опять DB2 v9 - издевательство или изменение синтаксиса?
Изменил.
Попробовал снова. По-моему, ничего не изменилось...

Код: 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
11.12.2006, 12:41
    #34189837
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
И опять DB2 v9 - издевательство или изменение синтаксиса?
Изменится, когда вы поймёте, что такое statement termination character и где оно задаётся.

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

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


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