Форум программистов, компьютерный форум, киберфорум
Oracle
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 04.08.2016
Сообщений: 107

Plsql цикл изменения запроса компоновка данных в созданную таблицу

10.11.2016, 11:44. Показов 1756. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем здравствуйте. Ребят я как это не странно только недавно узнал о существовании plsql мне интересно на что этот язык способен...
У меня есть задача которую решить самому не получается, подскажите кто сможет.
Допустим есть запрос на подсчет количества строк которые он выдаст, но запрос нужно посчитать с изменением одно критерия допустим rn=1-100 по сути должно получится сто запросов... И после их собирать в одну таблицу. Это долго и желания ни какого нет как модно изменить это значение rn с помощью plsql...
Пример того как я делал это раньше
select distinct count(*) from tablica where rn=1
Union all
select distinct count(*) from tablica where rn=2
... Итд
Но в один прекрасный момент я столкнулся с тем что сервер не вывозит запрос из за его сложности
Вопрос как с помощью plsql создать таблицу считать запрос и внасить данные в неё после чего изменять значение rn на 2 и повторить операцию пока у нас не получиться таблица из 100 строк... Всем кто откликнится огромное спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.11.2016, 11:44
Ответы с готовыми решениями:

С помощью SQL запроса добавить в созданную таблицу записи
Доброго времени суток всем! У меня проблема с этим вот заданием по Access: "С помощью SQL запроса добавить в созданную таблицу...

Как добавить программно таблицу в созданную локальную базу данных?
1 Как добавить программно таблицу (10000 на 10000) в созданную локальную базу данных? 2 Как записать/читать/удалить число/текст в...

Ошибка изменения данных таблицы при выполнении запроса
Добрый день! У меня вопрос по изменении данных таблицы при выполнении запроса. Пример во вложении. Исходные данные следующие: 1....

8
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
10.11.2016, 12:04
Цитата Сообщение от Lilze
я столкнулся с тем что сервер не вывозит запрос из за его сложности
Это весьма сомнительно. Скорее всего либо не было нужных индексов, либо еще чего (мало памяти и проч.).

Теперь по поводу PL/SQL. Это процедурное расширение Oracle SQL, т.е. включает в себя те возможности, которые не обеспечивает SQL (работа с переменными, условия, циклы и проч). Но в любом случае, чтобы получить какие-то сведения из таблиц БД, в PL/SQL вызываются SQL-запросы. Если ты имел ввиду, что PL/SQL может доступаться к данным, лежащим в таблицах БД, в обход SQL, то нет.
Да, можно было твои запросы вызывать поодиночке (в цикле) и результат засовывать в переменные или коллекцию, но шибко сомнительно, что это будет быстрее одного запроса.
0
0 / 0 / 0
Регистрация: 04.08.2016
Сообщений: 107
10.11.2016, 12:13  [ТС]
По поводу запроса.... Это я привёл просто пример... Скидываю запрос с которым возникла проблемма но он не полный... Это только фрагмент... R_f10 это район и он меняется в каждом запросе... Районов 64.. У сервера не хвотило мощи это посчитать поэтому хотелось найти вариант просто считать один запрос добавлять результат в таблицу менять район и сново считать... Пока 64 района не просчитаются....
Вложения
Тип файла: txt Peregruz.txt (3.4 Кб, 3 просмотров)
0
0 / 0 / 0
Регистрация: 04.08.2016
Сообщений: 107
10.11.2016, 12:15  [ТС]
Я с plsql ни когда не работал поэтому и прошу скинуть хоть какой то пример что бы в последствии я с ним как то разобрался
0
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
10.11.2016, 12:22
Цитата Сообщение от Lilze
Скидываю запрос с которым возникла проблемма но он не полный
ОК. По всем ли полям, входящим в условия связи, есть индексы? Плюс при оптимизации запроса обычно изучаю план запроса.
Еще раз: да, из блока PL/SQL можно вызывать каждую часть UNION отдельно и результат записывать в переменные. Но маловероятно, что это ускорит выполнение, скорее наоборот. Впрочем, никто не мешает попробовать.
0
0 / 0 / 0
Регистрация: 04.08.2016
Сообщений: 107
10.11.2016, 12:39  [ТС]
Вот это поле r-f10 оно индексированное поле

Добавлено через 11 минут
А на счёт плана я вас не очень понял...
Я просто выводу через селект отдельные запросы что бы они были в строку union и использую что бы добавить строку. И посчитать тот же запрос только поменяв район
0
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
10.11.2016, 12:59
Цитата Сообщение от Lilze Посмотреть сообщение
Вот это поле r-f10 оно индексированное поле
Этого мало, особенно если таблицы большие.
Есть 2 способа доступа: доступ по индексу и full scan, т.е. полный просмотр таблицы. Если есть индекс по нужному полю, то оптимизатор может выбрать один из двух способов. Если индекса нет, остается только full scan. Поэтому, если таблицы большие и время выполнения запроса недопустимо долго, то надо добавить индексы по столбцам, которые встречаются в условиях WHERE. В данном случае я бы добавил индексы по всем полям, которые присутствуют в условиях связи.

К слову сказать, именно план выполнения показывает, какой тип доступа к таблицам используется.
Посмотреть такой план можно в SQL*Plus с пом. команды EXPLAIN PLAN. Кроме того, в многих ГУИ есть пункты меню. для просмотра такого плана, ибо без этого невозможно оптимизировать запросы.

Кстати, если для связи таблиц требуется столько условий связи, я бы предположил неоптимальность структуры БД (хотя это и необязательно).
0
0 / 0 / 0
Регистрация: 04.08.2016
Сообщений: 107
10.11.2016, 13:23  [ТС]
Проблема у меня в том что буфер переполнялся и программа записала и не отвечала в итоге пришлось сервак перезагружать иначе я бы и не расстраивался считал бы как было... Но он виснет поэтому нужно буфер освобождать
0
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
10.11.2016, 15:20
Цитата Сообщение от Lilze
Проблема у меня в том что буфер переполнялся
Какой буфер?

Цитата Сообщение от Lilze
программа записала и не отвечала в итоге пришлось сервак перезагружать
Вообще-то если программа долго не отвечает, в первую очередь смотрят блокировки и/или ожидания сессии.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.11.2016, 15:20
Помогаю со студенческими работами здесь

Сохранить таблицу базы данных после изменения
Добрый день. Помогите с кодом, пожалуйста. Нужно очень срочно. После удаления из таблицы DB не нужных строк, её необходимо сохранить....

Вставка в таблицу данных из запроса
Есть на форме пустая таблица jTable1, и есть запрос set @Rank = 0; SELECT t.*, @rank := @Rank + 1 AS rank FROM (SELECT...

Добавление данных в таблицу из запроса
доброго времени суток! подскажите пожалуйста как реализовать добавление данных в таблицу "приход" из запроса "группировка...

Вставка данных из запроса в таблицу
Уважаемые форумчане! Помогите пожалуйста в решении проблемы! Сам нифига не художник, но надо. Тема учета лекарств в кабинете. В запросе...

Автоматическое изменения поля в зависимости от введенных данных в другую таблицу
Здравствуйте. У меня возник такой вопрос, при разработке базы данных Библиотека, таблица Книги, где есть поле Количество свободных...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru