powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Возможно ли использовать UNION внутри LOOP?
5 сообщений из 5, страница 1 из 1
Возможно ли использовать UNION внутри LOOP?
    #40076951
another_login
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Есть кусок кода (Oracle), который выполняет свою функцию, но выглядит весьма некрасиво:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
  WITH dates AS (select COLUMN_VALUE d from table(sys.odcinumberlist(10, 20, 30, 40, 50, 60, 70, 80, 90)))
  SELECT d FROM dates
  UNION SELECT d + 1 FROM dates
  UNION SELECT d + 2 FROM dates
  UNION SELECT d + 3 FROM dates
  UNION SELECT d + 4 FROM dates
  UNION SELECT d + 5 FROM dates
  UNION SELECT d + 6 FROM dates
  UNION SELECT d + 7 FROM dates
  UNION SELECT d + 8 FROM dates
  UNION SELECT d + 9 FROM dates



Есть ли возможность воспользоваться циклом в данном случае?
...
Рейтинг: 0 / 0
Возможно ли использовать UNION внутри LOOP?
    #40076972
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
select level + 9 d from dual connect by level <= 90;
...
Рейтинг: 0 / 0
Возможно ли использовать UNION внутри LOOP?
    #40076975
another_login
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env,

А применительно к таблице, полученной подзапросом, в примере, для краткости заменённой:
Код: plsql
1.
select COLUMN_VALUE d from table(sys.odcinumberlist(10, 20, 30, 40, 50, 60, 70, 80, 90))
...
Рейтинг: 0 / 0
Возможно ли использовать UNION внутри LOOP?
    #40076977
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-- 1)
Код: plsql
1.
2.
3.
4.
5.
WITH dates AS (select COLUMN_VALUE d from table(sys.odcinumberlist(10, 20, 30, 40, 50, 60, 70, 80, 90)))
, shifts AS (select COLUMN_VALUE shift from table(sys.odcinumberlist(0, 1, 2, 3, 4, 5, 6, 7, 9)))
Select dt.d + sht.shift as d
From dates dt, shifts sht
Order by 1;


--2)
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
WITH dates AS (select COLUMN_VALUE d from table(sys.odcinumberlist(10, 20, 30, 40, 50, 60, 70, 80, 90)))
, r_dates(dstart, d, lv) as (
  Select d as dstart, d , 1 as lv
  From dates 
  Union All 
  Select dstart, dstart + lv, lv + 1
  From r_dates 
  Where 
  1 = 1 
  and lv < 10
)
SEARCH DEPTH FIRST BY D SET rn
Select * from r_dates
;


--3)
Код: plsql
1.
2.
3.
4.
5.
WITH dates AS (select COLUMN_VALUE d from table(sys.odcinumberlist(10, 20, 30, 40, 50, 60, 70, 80, 90)))
select d as dstart, d+level-1 as dd , level as lv
from dates
connect by d = prior d  and level <= 10
and prior dbms_random.value is not null
...
Рейтинг: 0 / 0
Возможно ли использовать UNION внутри LOOP?
    #40077062
another_login
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
booby, отлично, спасибо, №1 подошёл в моём случае.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Возможно ли использовать UNION внутри LOOP?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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