ORA_Worker
Дата: 06.12.2007 12:14:17
Всем привет... Вот такая неприятная ситуация, подскажите, пож-та, что можно сделать...
Создаю типы:
create or replace type OBJ as object(
indx number
)
create or replace type TBL_OBJ as table of OBJ
Затем в PLSQL-процедуре создаю переменную, инициализирую ее, начинаю работать с массивом:
declare
rec TBL_OBJ := TBL_OBJ();
begin
rec.extend;
rec(1) := OBJ (...);
и т.д.
end;
При первом вызове процедуры - работает все хорошо, при повторном все ломается в силу того, что в памяти сидят данные, полученные при первом проходе... Если сбросить сессию и подключиться заново, то, очевидно, все работает...
1. Попытался очистить массив с помощью метода delete - все равно не работает...
2. Попытался объявить массив в блоке PLSQL-процедуры - нельзя использовать операторы TABLE, CAST, MULTISET...
3. Можно, конечно, чистить shared_pool - но это скажется на производительности...
???
Подскажите что-нибудь...
Jannny
Дата: 06.12.2007 12:37:34
ORA_Worker |
Массив объявлен глобально (ссылается на тип в схеме) |
Бог с типом. Сам массив где объявлен?
ORA_Worker |
delete не работает... |
та ссылка, куда Elic послал :)
Ещё раз - Вы просто где-то делаете неправильные выводы. Попробуйте пойти с самого начала :) Опять же - там ли чистите, где нужно?
ORA_Worker |
даже отладчик в нем (в массиве) |
Отладчики бывают разные :)
ORA_Worker
Дата: 06.12.2007 13:06:34
Всем спасибо за советы... Oracle, оказывается за собой тащит значения глобальных переменных, инициализация их в теле, а не в объявлении процедуры - решило проблемы...