Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / MERGE в DB2 9 для LUW и для z/OS / 4 сообщений из 4, страница 1 из 1
07.04.2009, 16:08
    #35917537
demidovich
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MERGE в DB2 9 для LUW и для z/OS
Господа,

И снова всплыла проблема совместимости DB2 для LUW и z/OS.
В LUW отлично работает такая конструкция:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
MERGE INTO A.TARGETTABLE t
	USING A.SOURCETABLE s
ON t.ID = s.ID
WHEN MATCHED THEN
	UPDATE SET NAME = s.NAME
WHEN NOT MATCHED THEN
	INSERT (NAME) VALUES (s.NAME);

А вот переносится ли это на z/OS - я так и не понял. Если все-таки да, то подскажите, плиз, на этом простом примере, как именно. Спасибо!
...
Рейтинг: 0 / 0
07.04.2009, 16:28
    #35917653
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MERGE в DB2 9 для LUW и для z/OS
demidovichГоспода,

И снова всплыла проблема совместимости DB2 для LUW и z/OS.
В LUW отлично работает такая конструкция:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
MERGE INTO A.TARGETTABLE t
	USING A.SOURCETABLE s
ON t.ID = s.ID
WHEN MATCHED THEN
	UPDATE SET NAME = s.NAME
WHEN NOT MATCHED THEN
	INSERT (NAME) VALUES (s.NAME);

А вот переносится ли это на z/OS - я так и не понял. Если все-таки да, то подскажите, плиз, на этом простом примере, как именно. Спасибо!Должно.
MERGE .
...
Рейтинг: 0 / 0
07.04.2009, 16:57
    #35917777
demidovich
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MERGE в DB2 9 для LUW и для z/OS
Mark Barinstein,

Спасибо за ссылку, но я на ней уже безрезультатно потоптался некоторое время, потому и решил написать на форум. Дело в том, что z/OS после USING зачем-то требует VALUES и еще что-то непонятное:

Код: 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.
source-table:


>>-(VALUES-+-| values-single-row |-------+-)-------------------->
           |                         ( 1 ) |     
           '-| values-multiple-row |-----'     

                               .-,-----------.     
   .-AS-.                      V             |     
>--+----+--correlation-name--(---column-name-+-)---------------><


values-multiple-row:


>>-+-+-expression----------+---------+-------------------------->
   | +-host-variable-array-+         |   
   | '-NULL----------------'         |   
   |   .-,-----------------------.   |   
   |   V                         |   |   
   '-(---+-expression----------+-+-)-'   
         +-host-variable-array-+         
         '-NULL----------------'         

                                   ( 1 )   
>--FOR--+-host-variable----+--ROWS-----------------------------><
        '-integer-constant-'             


попытка переделать запрос вот так (пробовал разные варианты вокруг да около) ни к чему не привела:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
MERGE INTO A.TARGETTABLE t
	USING (VALUES (SELECT ID, NAME FROM A.SOURCETABLE)) AS s
ON (t.ID = s.ID)
WHEN MATCHED THEN
	UPDATE SET NAME = s.NAME
WHEN NOT MATCHED THEN
	INSERT (NAME) VALUES (s.NAME);


к тому же, как я понял из документации, при использовании нескольких строк в источнике обязательно нужно указывать число строк (FOR--+-host-variable----+--ROWS) :(

Есть идеи почему мой вариант не работает?
...
Рейтинг: 0 / 0
07.04.2009, 17:05
    #35917822
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MERGE в DB2 9 для LUW и для z/OS
demidovich,

Да, я невнимательно прочитал ваш пример.
В zos в USING вы не можете использовать селекты, а только values - фактически, статический массив строк.
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / MERGE в DB2 9 для LUW и для z/OS / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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