powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Помощь в запросе
10 сообщений из 10, страница 1 из 1
Помощь в запросе
    #35721799
Фотография I_love_MSDN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
- Абсолют' ный
-посковый робот по MSDN для
- ленивых
...
Рейтинг: 0 / 0
Помощь в запросе
    #35721817
Фотография I_love_MSDN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извините, слишком рано нажал на "Опубликовать".
Задача:
Создать скрипт на создание. Но перед этим нужно определить если такой уже объект, если есть - то дропнуть.

Объяснение:
Есть программулина, которая динамически генерит скрипт на создание объекта. И есть возможность напороться, на то, что уже такой объект есть.

Вариант № 1
BEGIN ATOMIC
DECLARE objectname INT DEFAULT 0;
set objectname = (select count(tabname) from syscat.tables where tabname = 'EMPLOYEE' and tabschema = 'AIX91QA5');
IF objectname > 0 THEN DROP TABLE 'AIX91QA5'.'EMPLOYEE';
END IF;
END

Вариант № 2
BEGIN ATOMIC
FOR row AS
select count(tabname) AS d from syscat.tables f where f.tabname = 'EMPLOYEE' and f.tabschema = 'AIX91QA5'
DO
IF row.d is NULL THEN
INSERT INTO except VALUES(row.pk, row.c1);
ELSE
DROP TABLE 'AIX91QA5'.'EMPLOYEE';
END IF;
END FOR;
END

- Абсолют' ный
-посковый робот по MSDN для
- ленивых
...
Рейтинг: 0 / 0
Помощь в запросе
    #35722317
Фотография I_love_MSDN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Процедуры создавать нельзя.
Вот еще чего надумал:
[SRC=sql]WITH temp1 AS
(SELECT tabname
,VARCHAR(' DROP TABLE ' || tabschema || '.' || tabname ) AS SQL_text
from syscat.tables where tabname = 'EMPLOYEE' and tabschema = 'AIX91QA5'
) SELECT DISTINCT(SQL_text) AS sql FROM temp1 t1;[/src]Возвращает скуль скрипт. Его надо запустить тогда. Как это сделать без ХП?
- Абсолют' ный
-посковый робот по MSDN для
- ленивых
...
Рейтинг: 0 / 0
Помощь в запросе
    #35723404
gals
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
I_love_MSDN, "поваренная" книга вам в помощь. Там есть пример выполнения BEGIN ATOM ... END.
...
Рейтинг: 0 / 0
Помощь в запросе
    #35724984
Фотография I_love_MSDN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
galsI_love_MSDN, "поваренная" книга вам в помощь. Там есть пример выполнения BEGIN ATOM ... END.
При чем здесь BEGIN ATOM? Я уже нашел похожую тему: а мне нужно без процедуры
...
Рейтинг: 0 / 0
Помощь в запросе
    #35725498
gals
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
I_love_MSDN, если вам книга рецептов не нужна, прочтите статью за 2002 год http://www.ibm.com/developerworks/data/library/techarticle/0203yip/0203yip.html
Пример номер 2. И подумайте, где в этом примере процедуры.
...
Рейтинг: 0 / 0
Помощь в запросе
    #35725617
Фотография Абсолют
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
galsI_love_MSDN, если вам книга рецептов не нужна, прочтите статью за 2002 год http://www.ibm.com/developerworks/data/library/techarticle/0203yip/0203yip.html
Пример номер 2. И подумайте, где в этом примере процедуры.
Гм, вот тут почитал, я думаю Галс вы немного ситуацию не поняли.
...
Рейтинг: 0 / 0
Помощь в запросе
    #35725620
Фотография Абсолют
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
begin atomic
if (DAYOFWEEK (Current Timestamp)= 2 ) then
    insert into HELLO values ('Hello Monday');
elseif (DAYOFWEEK (Current Timestamp)= 6 ) then
    insert into HELLO values ('Hello Friday');
else
    SIGNAL SQLSTATE '80000'
        SET MESSAGE_TEXT='Script is for MON & FRI only!';
end if;
end@
Т. е., вы хотите сказать, что скрипт будет валидный если его переделать на вот такой ладен?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
begin atomic
if (DAYOFWEEK (Current Timestamp)= 2 ) then
    insert into HELLO values ('Hello Monday');
elseif (DAYOFWEEK (Current Timestamp)= 6 ) then
drop table "ffff"."tttt";
else
    SIGNAL SQLSTATE '80000'
        SET MESSAGE_TEXT='Script is for MON & FRI only!';
end if;
end@
...
Рейтинг: 0 / 0
Помощь в запросе
    #35728965
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В compound SQL не все операторы разрешены.
А на счет того, что процедуры создавать нельзя - все можно обойти.
Вы же можете в своем скрипте указать в самом начале UPDATE COMMAND OPTIONS USING C OFF - т.е. отключить автокоммит. Создать процедуру не закомитив, выполнить ее, и если все в порядке - то убить ее и закоммититть, а если что-то случилось - то просто откатиться.
...
Рейтинг: 0 / 0
Помощь в запросе
    #35729073
Фотография Абсолют
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenmanВ compound SQL не все операторы разрешены.
А на счет того, что процедуры создавать нельзя - все можно обойти.
Вы же можете в своем скрипте указать в самом начале UPDATE COMMAND OPTIONS USING C OFF - т.е. отключить автокоммит. Создать процедуру не закомитив, выполнить ее, и если все в порядке - то убить ее и закоммититть, а если что-то случилось - то просто откатиться.
Спасибо.
По сути так и выкрутились.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Помощь в запросе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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