powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / как организовать цикл?
9 сообщений из 9, страница 1 из 1
как организовать цикл?
    #39760110
Dmitry1979
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в оракле полный нуб

допустим есть функция

Код: plsql
1.
function pc_ProcessDetailesRep(start_date in date) return t_ProcessDetailesItem_dataset pipelined




возвращает некий датасет. требуется дергать ее увеличивая дату в цикле в неком интервале дат и вернуть то что она возвращает в виде одной объединенной выборки.
на mssql подобная хрень как два пальца. тут всю голову уже сломал (((
...
Рейтинг: 0 / 0
как организовать цикл?
    #39760112
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry1979в неком интервале дат ТОП №11
...
Рейтинг: 0 / 0
как организовать цикл?
    #39760120
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry1979,

что не получается, пройтись по интервалу или вернуть?

....
stax
...
Рейтинг: 0 / 0
как организовать цикл?
    #39760124
Dmitry1979
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax,

просто не понимаю как это организовать. в mssql если бы возникла такая задача - просто бы вставлял во временную таблицу (тем более задача разовая и на производительность вообще пофиг) потом бы сделал из нее select. как это делается в oracle?
...
Рейтинг: 0 / 0
как организовать цикл?
    #39760134
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry1979,

Коррелированыий джоин на генератор.
...
Рейтинг: 0 / 0
как организовать цикл?
    #39760136
Dmitry1979
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-2-,

а это что за зверь?
...
Рейтинг: 0 / 0
как организовать цикл?
    #39760144
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry1979Stax,

просто не понимаю как это организовать. в mssql если бы возникла такая задача - просто бы вставлял во временную таблицу (тем более задача разовая и на производительность вообще пофиг) потом бы сделал из нее select. как это делается в oracle?

если разовая, сделайте на pl/sql и не партесь

....
stax
...
Рейтинг: 0 / 0
как организовать цикл?
    #39760157
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry1979,

если селектом, то самое простое (через гланды)
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
SQL> ed
Wrote file afiedt.buf

  1  with t as (--генерим диапазон
  2  select level*10 from dual connect by level <=3 )
  3  select
  4    cast(
  5     multiset(select f.*
  6      from dept d,table(emp_pipe_stax(d.deptno)/* ваша ф-ція */) f )
  7*    as emp_tt /* ваш тіп */) emp_tt from dual
SQL> /

EMP_TT(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
----------------------------------------------------------------------------
EMP_TT(EMP_T(7782.000, 'CLARK', 'MANAGER', 7839.000, '09.06.81', 2450.000, N
82', 1300.000, NULL, 10.000), EMP_T(7369.000, 'SMITH', 'CLERK', 7902.000, '1
LYST', 7566.000, '09.12.82', 3000.000, NULL, 20.000), EMP_T(7876.000, 'ADAMS
(7499.000, 'ALLEN', 'SALESMAN', 7698.000, '20.02.81', 1600.000, 300.000, 30.
.81', 1250.000, 1400.000, 30.000), EMP_T(7698.000, 'BLAKE', 'MANAGER', 7839.
MES', 'CLERK', 7698.000, '03.12.81', 950.000, NULL, 30.000))



.....
stax
...
Рейтинг: 0 / 0
как организовать цикл?
    #39760158
merch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
create table test_pipe(id number);

begin
  insert into test_pipe(id)
  select level from dual
  connect by level <= 5;
  commit;
end;
/

create or replace function test_pipe_fnc(id_inc number) return sys.odcinumberlist as
  l_id_table      sys.odcinumberlist := sys.odcinumberlist();
begin
    select id bulk collect into l_id_table from test_pipe where id > id_inc;    
    return l_id_table;
end;
/


with iteration_list(num) as
(
  select level from dual
  connect by level <= 2
)
select 
  il.num          as iteration_num,
  pt.column_value as dyn_dataset
from 
iteration_list il
cross join table(test_pipe_fnc(il.num)) pt;

drop table test_pipe purge;
drop function test_pipe_fnc;
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / как организовать цикл?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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