Форум программистов, компьютерный форум, киберфорум
Наши страницы
Oracle
Войти
Регистрация
Восстановить пароль
 
Shepard90
5 / 5 / 3
Регистрация: 18.10.2010
Сообщений: 140
#1

Наиболее быстро и надежно пересоздать столбец - Oracle

11.02.2014, 20:03. Просмотров 375. Ответов 1
Метки нет (Все метки)

Как наиболее быстро и надежно пересоздать столбец?
Процедура вызывается в ходе выполнения java-класса.
Обрабатываю два ексепшна в ходе добавления столбца: column being added already exists in table, resource busy and acquire with NOWAIT specified.
Если столбец существует то обрабатывается эксепшн тем, что содержимое столбца обNULLяется. Это долго. Хотелось бы как то ускориться
Можно было бы дропнуть его и заново создать, но при этом вновь возникает вероятность ORA-00054.

Можно в принципе проверить наличие столбца в user_tables, и после этого решить: дропать и создавать либо просто создать, при этом все равно отлавливая 00054.

В общем у меня совсем небольшой опыт sql, поэтому хотелось бы услышать наилучший способ.


Oracle 11 SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
PROCEDURE addField(t_name IN VARCHAR)
IS
BEGIN
  LOOP
  BEGIN
    EXECUTE IMMEDIATE 'alter table ' || t_name || ' ADD OLD_RECONCILE NUMBER(1,0)';
    EXCEPTION WHEN OTHERS THEN
      IF SQLCODE=-1430 THEN
        EXECUTE IMMEDIATE 'update ' || t_name || ' set old_reconcile=null where old_reconcile IS NOT NULL';
        EXIT;
      ELSIF SQLCODE=-54 THEN
        DBMS_LOCK.SLEEP(1);
      ELSE
        EXIT;
      END IF;
  END;
  END LOOP;
END addField;

http://www.cyberforum.ru/database/thread1676959.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2014, 20:03
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Наиболее быстро и надежно пересоздать столбец (Oracle):

как быстро и надежно подключиться к проводке
день добрый. нужно подключиться к слаботочке в машине. хочется не портить...

Быстро и надежно получить имена всех полей в MDB базе
Способ через Set Rs = Cnn.OpenSchema(adSchemaColumns) и потом через заданные...

Быстро, надежно и дешево: ПК для дома (фильмы, интернет, офис).
Всем привет. Хочу взять новый системник для домашних потребностей. Фильмы,...

В какую коллекцию наиболее быстро добавляются объекты?
В какую коллекцию наиболее быстро добавляются объекты?

Как наиболее быстро определить зацикливание связанного списка? (a => b => c => d => e => a)
You have a pointer to some element in a linked list (a => b => c => d => e)....

1
Grossmeister
Модератор
3355 / 2413 / 402
Регистрация: 21.01.2011
Сообщений: 10,641
12.02.2014, 09:47 #2
Делать DDL объектов "на лету", из процедур - это вообще считается плохой практикой (за редким исключением). Обычно отдельно делается DDL (руками или скриптами), а затем уже все остальное.

PS
Про обработку EXCEPTION тоже неплохо бы почитать. Так как у тебя, никто не делает.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.02.2014, 09:47
Привет! Вот еще темы с решениями:

Как наиболее быстро соединить все слова в одну строку через запятую?
Как по бистрому соеденить все слова в одну строку через кому? (можно через...

Работа с бинарными файлами: какой способ работает наиболее быстро при записи и считывании?
Всем привет прошу помощи по этой теме. Попробую изложить кратко: 1) Есть не...

MapViewOfFile. Как наиболее быстро использовать файл как массив?
В общем дело такое : Имею файл около 256 Мб. Необходимо юзать его как...

Пересоздать массив
Добрый вечер, интересует вопрос как пересоздать массив, приведу пример: bool...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru