Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Коллекции в функциях / 17 сообщений из 17, страница 1 из 1
13.09.2016, 11:37:17
    #39308261
PsyDiamond
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коллекции в функциях
Годная ли практика использовать функции, которые принимают, либо возвращают заполненные коллекции?
и как в этому случае происходит освобождение памяти? (dbms_session.free_unused_user_memory)
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
type Shod
IS
  record
  (...);
type ShodTable
IS
  TABLE OF Shod;
...
type ds
IS
  record
  (
    ts ShodTable, 
tr xxxTable,
tz yyyTable
...);
function f1(...) return ds;
procedure p1(DataSet in ds);
...
Рейтинг: 0 / 0
13.09.2016, 11:51:38
    #39308284
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коллекции в функциях
PsyDiamondпамятиRTFM Subprogram Parameter Modes (FAQ)
...
Рейтинг: 0 / 0
13.09.2016, 12:09:32
    #39308313
PsyDiamond
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коллекции в функциях
Elic, простите, это ответ на какой вопрос из тех что я задал?
...
Рейтинг: 0 / 0
13.09.2016, 12:29:37
    #39308330
Коллекции в функциях
PsyDiamondГодная ли практика использовать функции, которые принимают, либо возвращают заполненные коллекции?
Вполне себе практика.
PsyDiamondкак в этому случае происходит освобождение памяти
Вроде как ушел из блока видимости переменной, ну память и очистилась )
...
Рейтинг: 0 / 0
13.09.2016, 12:29:51
    #39308331
пробегал
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коллекции в функциях
PsyDiamondElic, простите, это ответ на какой вопрос из тех что я задал?
это ответ на все ваши вопросы, вы сначала почитайте и подумайте, а потом поймете
...
Рейтинг: 0 / 0
13.09.2016, 12:38:36
    #39308340
Коллекции в функциях
НинадаНичегоЧиститьPsyDiamondкак в этому случае происходит освобождение памяти
Вроде как ушел из блока видимости переменной, ну память и очистилась )есть еще такой аспект, как переприсвоение в цикле. Но тогда вопрос касается любых динамически выделяемых данных, в том числе длинных строк.
...
Рейтинг: 0 / 0
13.09.2016, 12:46:14
    #39308344
PsyDiamond
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коллекции в функциях
пробегалPsyDiamondElic, простите, это ответ на какой вопрос из тех что я задал?
это ответ на все ваши вопросы, вы сначала почитайте и подумайте, а потом поймете

не прельщает меня практика возвращать данные через out параметры
если вы про то что я передаю тип по значению - тут согласен можно передать ссылку.
вопрос то в другом.
если я использую record состоящий из table of, то как происходит освобождение памяти? и как в этом случае хранятся данные - по значению или ссылкой? и прочее
...
Рейтинг: 0 / 0
13.09.2016, 12:49:57
    #39308353
Коллекции в функциях
коллектор мусораЕсть еще такой аспект, как переприсвоение в цикле.
Но тогда вопрос касается любых динамически выделяемых данных, в том числе длинных строк.
Хотите сказать, если в цикле присваивать разные значение например varchar2 переменной, будет отжираться память?
Да ну не, не верю )
Если в цикле динамически добавляем элементы в коллекцию, то само собой, но никакие фримемори все равно ж не нужны )
...
Рейтинг: 0 / 0
13.09.2016, 12:52:34
    #39308358
Коллекции в функциях
PsyDiamond,

по значению/ссылке это про "хранятся".
а проверить гипотезы несложно, проведя экскременты с засечкой времени и памяти на больших массивах.
и не забывать, что поведение может радикально меняться от уровня оптимизатора включения дебага.
...
Рейтинг: 0 / 0
13.09.2016, 12:55:53
    #39308366
Коллекции в функциях
PsyDiamond, там вроде фсьо написано: если добавишь NOCOPY, IN OUT будет по ссылке, по дефолту по значению )
Что именно и в какой момент намереваешься чистить, приведи пример очистки, вроде всегда само работало :)
...
Рейтинг: 0 / 0
13.09.2016, 13:30:00
    #39308392
пробегал
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коллекции в функциях
PsyDiamondпробегалпропущено...

это ответ на все ваши вопросы, вы сначала почитайте и подумайте, а потом поймете

не прельщает меня практика возвращать данные через out параметры
если вы про то что я передаю тип по значению - тут согласен можно передать ссылку.
вопрос то в другом.
если я использую record состоящий из table of, то как происходит освобождение памяти? и как в этом случае хранятся данные - по значению или ссылкой? и прочее

Чистить в PL/SQL за собой особо не надо. Это делает за вас виртуальная машина PL/SQL и его внутренние правила удаления объектов.

Большие данные естественно не следует записывать в коллекции, для этого есть временные таблицы.
...
Рейтинг: 0 / 0
13.09.2016, 13:39:28
    #39308399
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коллекции в функциях
Есть еще область жизни переменных/коллекций
Те, которые объявлены внутри процедур/функций понятно не живут больше одного вызова (call), соответственно, и память для них выделяется в PGA (даже в Shared server)
Но вот те которые объявлены в пакете за пределами процедур/функций сохраняют свое содержимое до конца сессии, хранятся в UGA и желательно не забывать их чистить и освобождать память
...
Рейтинг: 0 / 0
13.09.2016, 14:27:10
    #39308439
PsyDiamond
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коллекции в функциях
Вячеслав ЛюбомудровЕсть еще область жизни переменных/коллекций
Те, которые объявлены внутри процедур/функций понятно не живут больше одного вызова (call), соответственно, и память для них выделяется в PGA (даже в Shared server)
Но вот те которые объявлены в пакете за пределами процедур/функций сохраняют свое содержимое до конца сессии, хранятся в UGA и желательно не забывать их чистить и освобождать память

т.е. я использую в пакете
Код: plsql
1.
2.
function f1(...) return ds;
procedure p1(DataSet in ds);

то чистить не надо?
...
Рейтинг: 0 / 0
13.09.2016, 14:56:31
    #39308462
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коллекции в функциях
PsyDiamondчистить не надо?не надо
решайте задачи по мере их поступления
иначе утонете
...
Рейтинг: 0 / 0
13.09.2016, 15:03:39
    #39308468
PsyDiamond
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коллекции в функциях
благодарю за ответы
...
Рейтинг: 0 / 0
13.09.2016, 18:06:07
    #39308630
пробегал
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коллекции в функциях
PsyDiamondблагодарю за ответы

Кстати, если вы уж озаботились очисткой коллекций, то прочитайте про свойство DELETE у коллекций.
...
Рейтинг: 0 / 0
22.09.2016, 08:11:31
    #39313095
wellvk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коллекции в функциях
Для ф-ции из package подойдет
Код: plsql
1.
PRAGMA SERIALLY_REUSABLE;


тынц
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Коллекции в функциях / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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