•  
  • 0
  •  
0

Oracle PLSQL объекты - как получить указатель на объект

Добрый день. У меня довольно сложная иерархия типов, и столкнулся со следующей ерундой: похоже, при присвоении одного объекта другому, оракл копирует объект. А я хочу, чтобы он присваивал по ссылке.

Для наглядности, пример:

CREATE OR REPLACE TYPE t_test AS OBJECT
(
id NUMBER
);

-- Тогда следующий код:

DECLARE
  t1 t_test;
  t2 t_test;
BEGIN
  t1 := new t_test(1);
  t2 := t1;
  out(t1.id || t2.id);
  t2.id := 2;
  out(t1.id || t2.id);
END;

выдает: 11 12

Как переменной t2 присвоить указатель на t1, чтобы при изменении t2 менялись также параметры t1? Если хотите посоветовать почитать про NOCOPY и REF - то, пожалуйста, с примером: ибо, похоже, оно про другое. NOCOPY работает для in out параметров, а REF DEREF - для хранящихся в таблицах даных (если не ошибаюсь)

Oracle, plsql.
спросил 930 дней назад Аватор пользователя dieblo dieblo
30
изменил 930 дней назад Аватор пользователя dieblo dieblo
30
300

2 ответа:

    •  
    • 0
    •  

    вы лучше конец задачи объясните. У меня с ораклом опыта более 4лет. Я постораюсь помоч

    ответил 930 дней назад Аватор пользователя Koshak01 Koshak01
    30 1
    •  
    • 0
    •  

    Задача - построить в PL\SQL дерево объектов, и осуществлять его обход. Задача - сделать это без табличек, ибо критична производительность.

    Стало быть, при создании узла, надо передавать ему указатель на родителя. Передаю его in out nocopy - или даже просто in - вроде все нормально, но когда выполняется parent := in_parent - начинаются, (с определенного момента), страшные тормоза: судя по примеру выше, у КАЖДОГО нода получается по экземпляру всего дерева практически:) - т.е. при присвоении, объект копируется.

    Вот такие дела. Опыт работы с ораклом у меня с 2004 года тоже, а вот ответа на этот вопрос, как оказалось, не знаю :(

    ответил 929 дней назад Аватор пользователя dieblo dieblo
    30
Чтобы написать ответ, вы должны авторизироваться.