powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вложенная таблица внутри индексной таблицы
6 сообщений из 6, страница 1 из 1
Вложенная таблица внутри индексной таблицы
    #36479137
aleksandy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дано:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
row table%ROWTYPE;

TYPE NUMBER_LIST IS TABLE OF NUMBER;
number_list NUMBER_LIST := NUMBER_LIST();

TYPE FIELD_LIST IS TABLE OF table.field%TYPE;
tmp_n_list FIELD_LIST;

TYPE MAP IS TABLE OF FIELD_LIST INDEX BY BINARY_INTEGER;
map MAP;

В коде есть такие куски:
Код: plaintext
1.
2.
3.
4.
result := dbms_sql.execute(cursor_id);
WHILE dbms_sql.fetch_rows(cursor_id) >  0  LOOP
  dbms_sql.column_value(cursor_id,  1 , field_value);
  number_list.EXTEND( 1 , field_value);
END LOOP;
и
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
IF NOT map.EXISTS(index) THEN
  map(index) := FIELD_LIST(row.field);
ELSE
  map(index).EXTEND( 1 , row.field);
  /* так тоже не работает :(
  tmp_n_list := map(index);
  tmp_n_list.EXTEND(1, row.field);
  map(index) := tmp_n_list;
  */
END IF;
Первый кусок работает. А вот второй компилируется, но при выполнении выкидывает ошибку.
Код: plaintext
ORA-06533: Subscript beyond count
Как заставить работать?
...
Рейтинг: 0 / 0
Вложенная таблица внутри индексной таблицы
    #36479190
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleksandy,

Логика двух блоков в IF не сходится. В одном вы создаете коллекцию с одним элементом, использованным в качестве значения, во втором вы создаете одну копию по индексу от значения.
oracle docEXTEND(n,i) appends n copies of the ith element to a collection.
...
Рейтинг: 0 / 0
Вложенная таблица внутри индексной таблицы
    #36479216
aleksandy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-2-Логика двух блоков в IF не сходится
Как тогда реализовать такой алгоритм:
Если map не содержит список значений с индексом index, его надо создать, запихнув в него один элемент. Иначе, т.е. map содержит список значений с индексом index, список надо расширить, добавив в его еще одно значение.

-2-во втором вы создаете одну копию по индексу от значения
Насколько я понимаю, EXTEND(count, element) добавляет в конец таблицы count копий элемента element. Где я не прав?
...
Рейтинг: 0 / 0
Вложенная таблица внутри индексной таблицы
    #36479232
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleksandyГде я не прав?Цитату я привел. Не нашел в словаре английского слова "ith"?
...
Рейтинг: 0 / 0
Вложенная таблица внутри индексной таблицы
    #36479253
aleksandy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-2-Не нашел в словаре английского слова "ith"?
А вот дерзить не стоит... Иногда лучше жевать...

Может кому-то пригодится... ELSE-часть переделал вот так
Код: plaintext
1.
2.
3.
4.
  tmp_n_list := map(index);
  tmp_n_list.EXTEND;
  tmp_n_list(tmp_n_list.COUNT) := row.field;
  map(index) := tmp_n_list;
...
Рейтинг: 0 / 0
Вложенная таблица внутри индексной таблицы
    #36479297
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleksandyА вот дерзить не стоит... Иногда лучше жевать...Чтобы потом не пришлось только сосать.

Дерзость, это когда огрызаются на старшего. А повторное упоминание уже сказанного, но не понятого с первого раза, здесь называется хамством.

Видимо из-за поголовной вежливости преподавателей не могу найти программиста. 2/3 кандидатов не могут прочитать задание из трех строк, где уже подчеркнуто уникальных записей, всех записей. Да еще и решают через жопу не снимая штанов.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вложенная таблица внутри индексной таблицы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]