Есть ли способ уничтожить объект PL/SQL, скажем, запись?Уничтожить объект Oracle PLSQL
В визуальном паскале мы можем использовать FreeAndNil (объект), и эта процедура освобождает память, используемую объектом, и указывает ее на Nil (null), тем самым уничтожая объект.
Мне было интересно, есть ли способ сделать это на объекте/записи PLSQL, или если я должен присвоить ему нуль.
Память освобождается, когда переменная выходит за пределы области видимости. Если вы не делаете что-то довольно необычное, объем памяти, который будет потребляться записью (или любым набором локальных переменных), довольно тривиален, и эти переменные существуют в памяти в течение довольно короткого периода времени, поэтому обычно это не делает смысл беспокоиться об этом потреблении памяти. Вы делаете что-то, что заставляет вас беспокоиться о памяти, используемой вашими локальными переменными? –
Да. Мы создали несколько пакетов, которые реализуют бизнес-правила. Эти пакеты выполняют вычисления и передают записи в качестве параметров. Во время отладки мы столкнулись с ситуацией, когда на первом проходе никакое значение не возвращалось. Затем, на втором проходе, мы получили нормальное возвращение. Изучая проблему, мы выяснили, что запись заполнена данными другого метода в клиентском приложении, которые использовали один и тот же пакет. Вот почему я прошу о том, чтобы безопасно очистить запись, чтобы мы не получали смешанные данные. Такое поведение было неожиданным. –
Это * очень * другой вопрос от того, о котором вы просите. Невозможно, чтобы объект PL/SQL, созданный за один сеанс, был видимым в другом сеансе. Если вы создали трехуровневое приложение, в котором средний уровень поддерживает пул соединений, и у вас есть встроенные пакеты, которые поддерживают состояние, вы хотите очистить состояние пакета как часть закрытия логического соединения и возврата его в пул. Если ваши пакеты не соответствуют действительности, я бы сказал, что у вашего кода есть ошибка. –