CftClub.ru
Клуб специалистов ЦФТ-Банк

массив структур, копирование значений

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle
Предыдущая тема :: Следующая тема  
Автор Сообщение
e.kha
Участник со стажем


Вступление в Клуб: 26.04.2012
СообщениеЧт Окт 11, 2012 07:01   массив структур, копирование значений Ответить с цитатой
Полезность: Нет оценки
есть массив типа структура (record).

есть два массива этого типа, только
массив а объявлен и заполняется в процедуре,
а массив b глобальный.

если я сделаю
такое присвоение в процедуре где объявлен массив а
Код:
b(b.count + 1) := b(i);


то при выходе из процедуры, массив b , будет пустой, видимо потому что
данная операция присваивает ссылку на ячейку из a.
Как можно быстро сделать копирование рекорда из одного массива в другой? Рекорд большой и копирование по полям долго описывать....
e.kha
Участник со стажем


Вступление в Клуб: 26.04.2012
СообщениеЧт Окт 11, 2012 07:02    Ответить с цитатой
Полезность: Нет оценки
извините ошибся

Код:
b(b.count + 1) := a(i);
yaffil
Профи


Вступление в Клуб: 18.08.2011
СообщениеЧт Окт 11, 2012 08:18   Re: массив структур, копирование значений Ответить с цитатой
Полезность: Нет оценки
e.kha пишет:

Как можно быстро сделать копирование рекорда из одного массива в другой? Рекорд большой и копирование по полям долго описывать....


что нибудь типа
Код:

for i in 1 .. a.count
loop
b(i):=a(i);
end loop;
e.kha
Участник со стажем


Вступление в Клуб: 26.04.2012
СообщениеЧт Окт 11, 2012 09:01    Ответить с цитатой
Полезность: Нет оценки
массив b объявлен вне процедуры и передается параметром процедуре

массив а объявлен в процедуре

после присваивания
значений массива а массиву b

Код:
b(b.count + 1) := a(i);


массив b в процедуре имеет значения
но как только процедура выполнена
он пустой
e.kha
Участник со стажем


Вступление в Клуб: 26.04.2012
СообщениеЧт Окт 11, 2012 09:05    Ответить с цитатой
Полезность: Нет оценки
прошу прощения, извините, я проперся....

кривые руки голове покоя не дают
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеПт Окт 12, 2012 13:51    Ответить с цитатой
Полезность: Нет оценки
e.kha пишет:
массив b объявлен вне процедуры и передается параметром процедуре

А зачем? Он же глобальный?
e.kha пишет:

массив а объявлен в процедуре

после присваивания
значений массива а массиву b

Код:
b(b.count + 1) := a(i);


массив b в процедуре имеет значения
но как только процедура выполнена
он пустой


если уж передаёшь массив с тем же именем, что и глобальный массив, сделай параметр p_b in out nocopy тип_массива

И, кстати, обязательно делать присваивание каждой записи?
Может, весь массив сразу присвоить? И функцию писать не надо...
Код:
 b:= a;


Вот она - проблема неправильного названия.

L_ - префикс глобальных переменных, в локальных описаниях.
G_ - префикс глобальных переменных, в локальных описаниях.
P_ - префикс параметров функций/процедур.
V$ - префикс пременных внутри функций/процедур. (символ доллара нужен для того, чтобы не путать с параметрами операции, описанными на вкладке "Параметры")
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru