powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / PLSQL: вернуть выборку, включая массив
20 сообщений из 20, страница 1 из 1
PLSQL: вернуть выборку, включая массив
    #36582065
коркодил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
предположим, надо вернуть из процедуры некий select.
можно сделать refcursor

но для каждой строки этого селекта надо вернуть еще один набор данных.

например, надо вернуть select * from emp, и для каждого сотрудника еще и список его детей.


какие есть best practices ?

сам вижу такие варианты:
- складывать второй массив в строку и возврвщать как строку с разделителем
- возвращать основной как рефкурсор, вторую выборку массивом
- все массивом
...
Рейтинг: 0 / 0
PLSQL: вернуть выборку, включая массив
    #36582071
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой цели вы хотите достичь? Опишите подробно.
Возможно, что она достигается более естественными способами.
...
Рейтинг: 0 / 0
PLSQL: вернуть выборку, включая массив
    #36582082
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
коркодил,

Один из неестественных вариантов:
Код: plaintext
select емпы.*, cursor(select * from empchilds where empid=емпы.empid) чилды from emp емпы
...
Рейтинг: 0 / 0
PLSQL: вернуть выборку, включая массив
    #36582101
коркодил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL*PlusКакой цели вы хотите достичь? Опишите подробно.
Возможно, что она достигается более естественными способами.

яж написал
вернуть select * from emp,
и для каждого сотрудника еще и список его детей.
предположим дети хранятся в таблице childs (emp_id, child_num, child_name)
...
Рейтинг: 0 / 0
PLSQL: вернуть выборку, включая массив
    #36582123
Фотография Изя Кацман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
коркодилSQL*PlusКакой цели вы хотите достичь? Опишите подробно.
Возможно, что она достигается более естественными способами.яж написал
вернуть select * from emp,
и для каждого сотрудника еще и список его детей.
предположим дети хранятся в таблице childs (emp_id, child_num, child_name)Это не цель. Это некие действия, шаги, способ и т.п.
Для чего, конкретно, вам это нужно?
Описывайте цель, а не отдельный шаг
...
Рейтинг: 0 / 0
PLSQL: вернуть выборку, включая массив
    #36582150
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
коркодилSQL*PlusКакой цели вы хотите достичь? Опишите подробно.
Возможно, что она достигается более естественными способами.
яж написалНаписали ответ не на тот вопрос... :-)
Наверное, я его недостаточно понятно задал...

Изя Кацман Описывайте цель, а не отдельный шаг Да, это правильная ссылка... :-)
...
Рейтинг: 0 / 0
PLSQL: вернуть выборку, включая массив
    #36582215
коркодил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
задача: вернуть из процедуры всех сотрудников департамента 10 и всех детей каждого из этих сотрудников.
...
Рейтинг: 0 / 0
PLSQL: вернуть выборку, включая массив
    #36582401
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
коркодилзадача: вернуть из процедуры всех сотрудников департамента 10 и всех детей каждого из этих сотрудников.Вернуть в детский сад, откуда они все сбежали в процедуру? :-)

О-пи-сы-ва-йте цель, а не от-дель-ный шаг!

P.S. Еще вот это послушайте и/или почитайте :-)
...
Рейтинг: 0 / 0
PLSQL: вернуть выборку, включая массив
    #36582464
коркодил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
какой странный молодой человек.

вернуть <в приложение>, в <другую процедуру>, туда откуда процедуру вызвали.
так вот вернуть output параметрами
всех сотрудников департамента 10 и всех детей каждого из этих сотрудников.
...
Рейтинг: 0 / 0
PLSQL: вернуть выборку, включая массив
    #36582469
Фотография Изя Кацман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем вы спрашиваете?
...
Рейтинг: 0 / 0
PLSQL: вернуть выборку, включая массив
    #36582486
wildwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
коркодил,

Один способ вам уже дали. Среди других - соорудить из записей(record)/коллекций/объектных типов нужную вам структуру; построить из выборки и вернуть XML-документ; массивы как вы сами написали.

А те "best practices", которых вы ждете, не универсальны, их уместность зависит от того, куда возвращаются данные и как там используются. А это ("цель") вы почему-то скрываете.
...
Рейтинг: 0 / 0
PLSQL: вернуть выборку, включая массив
    #36582491
RebusA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поколдовав над хрустальным шаром..............
Код: plaintext
1.
2.
3.
4.
5.
select *
from workers w,  -- работники
         children c   -- дети
where c.parent_id = w.id
   and w.depart_id =  10 
Так что ли хотите?
Но какой в этом смысл........?
...
Рейтинг: 0 / 0
PLSQL: вернуть выборку, включая массив
    #36582527
коркодил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
задача элементарная

есть 3 сотрудника, у каждого по 5 детей.

надо вернуть в приложение 3(!) строки, одним из столбцов которого будет nested table или array, хоть xml (хотя лучше без него), содержащий детей сотрудника.
...
Рейтинг: 0 / 0
PLSQL: вернуть выборку, включая массив
    #36582536
Фотография Изя Кацман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
коркодил,
знаешь что такое хрустальный шар?
...
Рейтинг: 0 / 0
PLSQL: вернуть выборку, включая массив
    #36582576
wildwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
коркодил3(!) строки, одним из столбцов которого будет nested table или array
тут .
А приложение-то поймет nested table или array?
...
Рейтинг: 0 / 0
PLSQL: вернуть выборку, включая массив
    #36582580
Фотография Изя Кацман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
коркодилесть 3 сотрудника, у каждого по 5 детей.А если у одного сотрудника не 5, а 6 детей?
...
Рейтинг: 0 / 0
PLSQL: вернуть выборку, включая массив
    #36582596
коркодил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wildwind, спасибо.
хотя до последнего не хотел создавать типы в SQL, без этого, вероятно, никуда.

Изя Кацманя такой одинокий тролль-идиот! обнимите меня все, пожалуйста :(
...
Рейтинг: 0 / 0
PLSQL: вернуть выборку, включая массив
    #36582607
RebusA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
коркодилзадача элементарная

есть 3 сотрудника, у каждого по 5 детей.

надо вернуть в приложение 3(!) строки, одним из столбцов которого будет nested table или array, хоть xml (хотя лучше без него), содержащий детей сотрудника.

Можно делать как угодно :)
Все зависит от задачи(от того зачем вам это и что с этим дальше будуте делать). Вы же сами говорите - "хоть xml (хотя лучше без него)"
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
create or replace package blablabla
as
  type t_children is table of number;
  type t_parenting is record (parent_id number, children t_children);
 function myout(depart number) return t_parenting;
end;
/
Не подходят pl/sql типы, используйти SQL типы
...
Рейтинг: 0 / 0
PLSQL: вернуть выборку, включая массив
    #36582635
wildwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
коркодилне хотел создавать типы в SQL, без этого, вероятно, никуда.
Почему же, есть куда. XML, ANYDATA/ANYDATASET, CLOB, конкатенация в строку в конце концов. Главное чтобы приложение разобралось.
...
Рейтинг: 0 / 0
PLSQL: вернуть выборку, включая массив
    #36582655
Фотография Изя Кацман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
коркодиля такой одинокий тролль-идиот! обнимите меня все, пожалуйста :(
В зеркало наконец-то посмотрел, камрад?! ))
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / PLSQL: вернуть выборку, включая массив
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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