Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Oracle > двумерный массив- заполнение


Автор: romai 15.11.2005, 11:17
Необходим 2-х мерный массив для задания матрицы

Тип - массив чисел
Код
create or replace type mtp$Array$Number as table of number;


Тип - массив массива чисел
Код
create or replace type mtp$Array2$Number as table of mtp$Array$Number;


как заполнить массив массивов

-ошибка-таблица или представление пользователя не существует
Код
declare 
  h mtp$array$number;
  h1 mtp$array2$number;
begin
  h := mtp$array$number(2);
  h(1):= 0;
  h(2):= 1;
  h1 := mtp$array2$number();
  for i in 1..2 loop
         insert into h1(i) values(h);    
  end loop;
 end;

Автор: LSD 15.11.2005, 23:56
С вложенными таблицами работают немного по другому.
Переменная инициализируется конструктором совпадающим с именем типа, а его параметры, это начальное значение этой таблицы. Т.е. начало надо переписать так:
Код
h := mtp$array$number(1, 2);

Чтобы присваивать значения за границами начального значения вложенную таблицу надо расширить с помощью extend.
В итоге твой код будет выглядеть так:
Код
declare    
  h mtp$array$number;    
  h1 mtp$array2$number;    
begin
  h := mtp$array$number(1, 2);    
  h1 := mtp$array2$number();    
  for i in 1 .. 2 loop    
    h1.extend;
    h1(i) := h; 
  end loop;    
end;


P.S. Пожалуйста при вставке кода в сообщение используй теги [cоde=sql] [/cоde].

Автор: romai 16.11.2005, 22:51
LSD спасибо всё работает - спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)