Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Процедура UPDATE’а поля COMMIT каждые 100 строк, создать цикл 
V
    Опции темы
AlexsandeG
  Дата 8.2.2023, 00:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 5.2.2023

Репутация: нет
Всего: нет



Всем привет! 
Помогите написать запрос, который будет ставить commit каждые 100 строк при добавлении/обновлении данных в таблицу.
То есть нужно сделать цикл, который на каждой 100-й строчке будет выполнять commit и так до тех пор пока все данные не будут добавлены, потому что их очнь много.
Я пытался сделать через if, но как-то не получилось, надеюсь кто-нибудь поможет разобраться.
Спрашивал у знакомых, кто тоже работает с sql, но у них тоже не очень вышло, поэтому решил попытать счастье тут)
Буду очень благодарен, если хотя бы есть какие-то предположения по этому вопросу.
И объясните мне, какие процедуры считаются не хранимыми.
PM MAIL   Вверх
Akina
Дата 9.2.2023, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: нет
Всего: 453



Маловменяемое описание.

В каком виде находятся данные для вставки?

Цитата(AlexsandeG @  8.2.2023,  01:47 Найти цитируемый пост)
какие процедуры считаются не хранимыми

В общем любая созданная пользователем процедура - хранимая.

Формально можно считать не хранимой разве что анонимную процедуру, если, конечно, СУБД их поддерживает. Поддерживает ли их конкретно Оракл, я лично ХЗ.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
AlexsandeG
Дата 9.2.2023, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 5.2.2023

Репутация: нет
Всего: нет



Хорошо, откинем процедуры, с ними понятно. 
Как правильно тогда составить запрос на update, чтобы при этом срабатывал commit каждые 100 строк?
Единственная моя догадка, что это цикл, но как воплотить это в реальность я не понимаю.
PM MAIL   Вверх
Akina
Дата 10.2.2023, 08:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: нет
Всего: 453



Цитата(AlexsandeG @  9.2.2023,  22:30 Найти цитируемый пост)
Как правильно тогда составить запрос на update, чтобы при этом срабатывал commit каждые 100 строк?

Столь общий вопрос предполагает только общий ответ. В формате одного запроса это нереализуемо. Только в виде итеративной процедуры.

Более конкретный ответ можно получить только после предоставления деталей. В частности, ответа на ранее заданный вопрос.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
AlexsandeG
Дата 10.2.2023, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 5.2.2023

Репутация: нет
Всего: нет



Возможно я не совсем информативно описал всю картину происходящего,  не буду отрицать. Попробую по другому объяснить...
Представим, что у меня есть таблица. В эту таблицу необходимо занести 1000 новых строк использую update. Но при всем этом у меня на каждые, предположим, 100 строк должен выполняться commit.
Это вся суть задания, которая была мне дана, а из этого задания я уже сделал вывод, что мне необходимо написать запрос-цикл.
Суть моей проблемы: я только изучаю sql, соответственно я даже не могу понять с чего мне начать писать запрос. Искал информацию в интернете, но мне это особо не помогло, тяжело разобраться самому. И как вы догадываетесь, то я решил прибегнуть к месту, где возможно вы мне и поможете.
Не знаю, какое еще описание задание добавить сюда.
PM MAIL   Вверх
Akina
Дата 12.2.2023, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: нет
Всего: 453



Цитата(AlexsandeG @  10.2.2023,  23:20 Найти цитируемый пост)
В эту таблицу необходимо занести 1000 новых строк использую update.

Ну бред же бредовый! 

Даже "только изучая SQL", нельзя не понимать разницу между "необходимо занести 1000 новых строк" (запрос INSERT, увеличивает количество записей в таблице) и "использую update" (запрос UPDATE, не изменяет количество записей в таблице).


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
LSD
Дата 12.2.2023, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15708
Регистрация: 24.3.2004

Репутация: 18
Всего: 537



Код

begin
      for i in 1 .. 100000
      loop
          insert into t values ( i, 'x' );
          if REMAINDER(i, 100) == 0 then
              commit;
          end if;
      end loop;
      commit;
  end;
 /



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
AlexsandeG
  Дата 15.2.2023, 02:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 5.2.2023

Репутация: нет
Всего: нет



Akina, Привет, это снова я. Да, я напутал все. В таблице уже имеются записи, соответственно просто нужно сделать update, в котором будет цикл ставить "commit;" на каждые 100 строк.
PM MAIL   Вверх
Akina
Дата 15.2.2023, 07:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: нет
Всего: 453



AlexsandeG, в любом случае возвращаемся к вопросу "Где конкретика"?

Показывайте пример. Полный CREATE TABLE таблицы, в которой надо обновлять данные, INSERT INTO с начальными данными (7-10 записей), сами данные для вставки (3-5 строк) с подробным описанием, в каком они виде (файл, массив, что-то ещё), и требуемый финальный результат после обновления, опять же с подробным описанием, почему именно так.

Скорее всего решение будет соответствовать шаблону, который выше опубликовал LSD.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Oracle"
Zloxa
LSD

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

  • при создании темы давайте ей осмысленное название, описывающее суть проблемы
  • указывайте используемую версию базы, способ соединения и язык программирования
  • при ошибках обязательно приводите код ошибки и сообщение сервера
  • приводите код в котором возникла ошибка, по возможности дайте тестовый пример демонстрирующий ошибку
  • при вставке кода используйте соответсвующие теги: [code=sql] [/code] для подсветки SQL и PL/SQL кода, [code=java] [/code] - для Java, и т.д.

  • документация по Oracle: 9i, 10g, 11g
  • книги по Oracle можно поискать здесь
  • действия модераторов можно обсудить здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Oracle | Следующая тема »


 




[ Время генерации скрипта: 0.1352 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.