Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
alexiy Профи
Вступление в Клуб: 29.06.2007
|
Вт Ноя 18, 2008 12:03  обнуление структур |
|
Полезность: Нет оценки
|
мучает один глупый вопрос - а можно ли делать так:
Код: | ...
dop_bud_reqs [BUD_REQ]; -- [BUD_REQ] - структура!
...
dop_bud_reqs := null;
... |
что именно происходит при таком присвоении со структурой? (каков механизм присвоения, что происходит с памятью и т.п.)
в документации оракла однозначно сказано, что обнуление структуры возможно лишь методом присвоения пустой структуры того же типа... _________________ two bee or not two bee |
|
 |
r00st Эксперт
Вступление в Клуб: 14.09.2007
|
Вт Ноя 18, 2008 12:58  Re: обнуление структур |
|
Полезность: Нет оценки
|
Полагаю, такой пример развеит все сомнения.
Код: | dop_bud_reqs [BUD_REQ]; -- [BUD_REQ] - структура!
...
dop_bud_reqs.[OKATO_STR] := '12345';
dop_bud_reqs := null;
debig_pipe (dop_bud_reqs.[OKATO_STR],0);
..... |
*Следует помнить, что структуры, имеющие реквизиты-массивы, стоит инитить перед заполнением. |
|
 |
timochev Эксперт
Вступление в Клуб: 02.07.2007
|
Вт Ноя 18, 2008 13:56   |
|
Полезность: Нет оценки
|
Пример мы писали... У нас обнулилось.
Но какие сомнения должны развеять примеры?
Если сам Оракл не пишет о возможности такого присвоения, то разве допустимо так писать? |
|
 |
r00st Эксперт
Вступление в Клуб: 14.09.2007
|
Вт Ноя 18, 2008 14:27   |
|
Полезность: Нет оценки
|
timochev пишет: | Но какие сомнения должны развеять примеры? | вот эти: Цитата: | мучает один глупый вопрос - а можно ли делать так: |
timochev пишет: | Если сам Оракл не пишет о возможности такого присвоения, то разве допустимо так писать? | Может им подсказать стоит? |
|
 |
timochev Эксперт
Вступление в Клуб: 02.07.2007
|
Вт Ноя 18, 2008 15:06   |
|
Полезность: Нет оценки
|
Кто-нибудь знает, описана ли возможность присвоения NULL структуре в документации Oracle?
ИМХО Если такого описания нет, то ЦФТ и мы не должны так писать.. Даже если сейчас это работает. Во-первых, в новой версии Oracle может отключить такую фичу. Во-вторых, вдруг происходит утечка памяти (может обнуляется только ссылка на место в памяти, выделенное для этой структуры). |
|
 |
alexiy Профи
Вступление в Клуб: 29.06.2007
|
Ср Ноя 19, 2008 10:49   |
|
Полезность: Нет оценки
|
неужто больше никто ничего не может сказать?...
гуру оракла, ёлки-иголки! где вы?
для вас же это должно быть на уровне элементарщины, азбуки для детей...
может, я не в ту ветку написал?...  _________________ two bee or not two bee |
|
 |
De Mian Профи
Вступление в Клуб: 26.09.2008
|
Сб Янв 03, 2009 17:53   |
|
Полезность: Нет оценки
|
timochev пишет: | Кто-нибудь знает, описана ли возможность присвоения NULL структуре в документации Oracle?
ИМХО Если такого описания нет, то ЦФТ и мы не должны так писать.. Даже если сейчас это работает. Во-первых, в новой версии Oracle может отключить такую фичу. Во-вторых, вдруг происходит утечка памяти (может обнуляется только ссылка на место в памяти, выделенное для этой структуры). |
Ну насколько понял всётаки пример выше написан на PL\PLUS....а не на PL\SQL... сейчас не работе( и слава богу- отдыхать тоже надо) . под рукой нет ни ибсы ни оракла..
Но текст на PL_PLUS типа
dop_bud_reqs [BUD_REQ]; -- [BUD_REQ] - структура!
...
dop_bud_reqs := null;
Парсится в PL_SQL в нечто подобное следующему:
dop_bud_reqs Z#BUD_REQ#ingterface.ИМЯ_ТИПА_БП;
plp$dop_bud_reqs Z#BUD_REQ#ingterface.ИМЯ_ТИПА_БП;
......
dop_bud_reqs := plp$dop_bud_reqs;
Вот вам и об-НУЛ-ение...
Ну вроде на нашем стареньком ядрышке так. |
|
 |
timochev Эксперт
Вступление в Клуб: 02.07.2007
|
Сб Янв 10, 2009 10:09   |
|
Полезность: Нет оценки
|
De Mian пишет: |
Но текст на PL_PLUS типа
dop_bud_reqs [BUD_REQ]; -- [BUD_REQ] - структура!
...
dop_bud_reqs := null;
Парсится в PL_SQL в нечто подобное следующему:
dop_bud_reqs Z#BUD_REQ#ingterface.ИМЯ_ТИПА_БП;
plp$dop_bud_reqs Z#BUD_REQ#ingterface.ИМЯ_ТИПА_БП;
......
dop_bud_reqs := plp$dop_bud_reqs;
Вот вам и об-НУЛ-ение...
Ну вроде на нашем стареньком ядрышке так. |
У нас парсится в
Код: | DOP_BUD_REQS := null; |
И проверяли мы не только на PL/Plus, но и на PL/SQL |
|
 |
alexiy Профи
Вступление в Клуб: 29.06.2007
|
Вт Июн 09, 2009 16:55  обнуление PL/SQL таблиц! |
|
Полезность: Нет оценки
|
в продолжение заглохшего.
из библиотеки ЦФТ (будет реализовано в 9.3):
Код: | type Rec_CalcDayPrc is record (OnDate date
,branch ref [BRANCH]
,CalcDate date);
type Tab_CalcDayPrc is table of Rec_CalcDayPrc index by varchar2;
CalcDayPrc Tab_CalcDayPrc; |
...
Код: | procedure clear_cache is
begin
CalcDayPrc := null;
end; |
а это как?... тоже все в порядке?
т.е. конструкция вида CalcDayPrc.delete не сильно обязательна?... _________________ two bee or not two bee |
|
 |
r00st Эксперт
Вступление в Клуб: 14.09.2007
|
Вт Июн 09, 2009 17:29   |
|
Полезность: Нет оценки
|
Это в порядке вещей.
Однако, на больших объемах может выскочить разница в скорости обработки. delete в этом случае предпочтительнее.
Доказательных ссылок не имею. Помню из практики. |
|
 |
|