Есть ли в SQL эквивалент команды iSeries OVRDBF? - PullRequest
1 голос
/ 04 февраля 2009

У меня есть требование в среде SQL, чтобы при определенных обстоятельствах все ссылки на таблицу (или представление) A в процедуре фактически использовали таблицу (или представление) B. В iSeries я бы использовал команду OVRDBF для переопределения ссылок к таблице A с таблицей B: ФАЙЛ OVRDBF (A) (B). Что будет эквивалентно этому в SQL? Есть один?

Моя цель - закончить с процедурой, которая не знает о переопределении. Мне не нужна условная логика внутри процедуры, которая направляет обработку в таблицу B, когда выполняются определенные условия. Видение:

При типичных обстоятельствах: просто вызовите процедуру

При определенных альтернативных обстоятельствах: выполнить эквивалент OVRDBF, а затем вызвать процедуру

Ответы [ 2 ]

1 голос
/ 06 февраля 2009

Как Эд упоминает, если вы можете изменить свою процедуру:

1) Создать псевдоним для файла (A)

CREATE ALIAS XYZ FOR A

2) Измените процедуру для ссылки на XYZ вместо A.

3) При запуске процедуры использования файла B выполните

DROP ALIAS XYZ;
CREATE ALIAS XYZ FOR B;
CALL PROCEDURE;
DROP ALIAS XYZ;
CREATE ALIAS XYZ FOR A;

Если вы не можете изменить процедуру и не беспокоитесь об одновременном доступе к таблице A, вы можете использовать:

RENAME TABLE A TO C;
CREATE ALIAS A FOR B;
CALL PROCEDURE;
DROP ALIAS A;
RENAME TABLE C TO A;
1 голос
/ 04 февраля 2009

Не уверен, какая среда SQL поддерживает какие параметры:

Я считаю, что у DB2 есть оператор CREATE ALIAS. Напишите SQL поверх псевдонима.

Другая возможность: выполнить ваши запросы к представлениям: где вы будете делать OVRDBF, отбросить представление и перестроить его по нужной таблице.

...