Отбросьте представление DB2, если оно существует - PullRequest
1 голос
/ 22 марта 2010

Почему это не работает в IBM Data Studio (Eclipse) :

IF EXISTS (SELECT 1 FROM SYSIBM.SYSVIEWS WHERE NAME = 'MYVIEW' AND CREATOR = 'MYSCHEMA') THEN
    DROP VIEW MYSCHEMA.MYVIEW;
END IF;

У меня такое чувство, что оно связано с терминаторами операторов (;), но я могу 't найти синтаксис, который работает.

Еще один похожий вопрос на Как проверить, существует ли процедура / представление / таблица, прежде чем отбрасывать ее в db2 9.1? предполагает, что им пришлось создать процедуруно это не решение для нас.

1 Ответ

1 голос
/ 22 марта 2010

из книги IBM: Начало работы с Data Studio для DB2 :

Заявление-терминатор: Вы можете разработать несколько операторов SQL в одном Окно редактора SQL, заканчивая каждый заявление с оператором терминатора персонаж. Терминатором по умолчанию является точка с запятой. Но вы можете изменить это на другой персонаж, щелкнув правой кнопкой мыши в содержание редактора и выбор действия контекстного меню Set Терминатор операторов.

EDIT:

ОК, похоже, проблема в синтаксисе. Многие люди, кажется, имеют ту же проблему. Пример см. DROP TABLE, VIEW, ... только если существует .

В примере упоминаются два решения.

  1. использовать Begin atomic
  2. используйте процедуру db2perf_quiet_drop

Подробнее читайте на понравившейся странице.

Второе редактирование:

Я только что нашел действительно хорошее объяснение для Begin ataomic на страницах IBM. См. Advanced SQL Scripting PL от IBM. Пример 2 - это то, что вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...