Три части имен для сравнения объектов между подсистемами DB2 - PullRequest
0 голосов
/ 23 сентября 2019

Когда я пытался использовать имена трех частей для сравнения объектов между подсистемами, используя следующий запрос:

SELECT A.NAME, A.DBNAME 

FROM SYSIBM.SYSTABLES A

WHERE NOT exists (SELECT * FROM rem1.SYSIBM.SYSTABLES B
                  where B.NAME = A.NAME )
WITH UR;

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

SQLCODE = -512, ОШИБКА: ЗАЯВЛЕНИЕ ОТНОСИТЕЛЬНО УДАЛЕННОГО ОБЪЕКТА НЕДОПУСТИМО *

Есть ли доступный обходной путь?

Ответы [ 3 ]

0 голосов
/ 23 сентября 2019

РЕДАКТИРОВАТЬ: Если вы хотите объединить таблицы из другого экземпляра / сервера, используя его псевдоним. Вам нужно создать оболочку, сервер и псевдоним.Если все в порядке, запрос из вашего поста должен работать.

CREATE WRAPPER

CREATE SERVER

CREATE NICKNAME

0 голосов
/ 24 сентября 2019

Db2 LUW поддерживает концепцию федерации.Вы можете следовать этому документу: https://www.ibm.com/developerworks/community/blogs/db2luwtechsupport/entry/how_to_setup_federation_between_two_db2_luw_databases2?lang=en

Я не уверен, применимо ли это к Db2 zOS.

0 голосов
/ 23 сентября 2019

(Возможно, не решение, но по крайней мере исправление.)

Вам необходим коррелированный подзапрос для NOT EXISTS:

WHERE NOT EXISTS (SELECT * FROM rem1.SYSIBM.SYSTABLES B WHERE B.NAME = A.NAME)
...