Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Oracle - когда какой тип коллекции использовать?

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Базы данных
Предыдущая тема :: Следующая тема  
Автор Сообщение
Mickey



Зарегистрирован: 11.02.2005
Сообщения: 4

СообщениеДобавлено: Пт Апр 29 2005 09:13    Заголовок сообщения: Oracle - когда какой тип коллекции использовать? Ответить с цитатой

Плиз, кто-нибудь может привести примеры тех случаев, когда вместо ассоциативных массивов, лучше использовать вложенные таблицы или VARRAY в PL/SQL коде?
Ну, конечно, те случаи, когда есть таблички с VARRAY или NESTED TABLE не рассматриваем Smile
_________________
Get your hands up!!!
Make noise!!! Make noise!!!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Mickey



Зарегистрирован: 11.02.2005
Сообщения: 4

СообщениеДобавлено: Пт Апр 29 2005 16:51    Заголовок сообщения: Ответить с цитатой

пока вижу тока пару достойный плюс их использования:
1 - к таким коллекциям можно применять SELECT'ы. Например можно их отсортировать или попробовать построить иерархический запрос (в этом случае типы коллекций надо объявлять в базе).
2 - задать ограничение на разреженность, ограниченность и т.п. - непосредственно вытекающие из их определения.
Но часто ли это используется? - вот в чем вопрос)))
_________________
Get your hands up!!!
Make noise!!! Make noise!!!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Mickey



Зарегистрирован: 11.02.2005
Сообщения: 4

СообщениеДобавлено: Сб Апр 30 2005 10:42    Заголовок сообщения: Ответить с цитатой

другой пример
если у вас в коллекции хранится список чего-нибудь, и вы хотите выдернуть из таблицы записи в которых значение поля принимает значение одного из элементов коллекции. мудрено звучит, но проблема достаточно часто встречается, а решение тривиально. а кое у кого я видел ее реализацию через Dynamic SQL

Rolling Eyes

CREATE TABLE my_table(n NUMBER);
CREATE TYPE my_type IS TABLE OF NUMBER;

INSERT INTO my_table(n) VALUES (1);
INSERT INTO my_table(n) VALUES (2);
INSERT INTO my_table(n) VALUES (3);

DECLARE
arr my_table := my_table(1,3,5);
nums DBMS_SQL.NUMBER_TABLE;
BEGIN
-- Зафетчим данные из таблички
SELECT n BULK COLLECT INTO nums
FROM my_table
WHERE n IN (SELECT column_value
FROM TABLE(ar));

-- выведем на что получилось
FOR i IN nums.FIRST..nums.LAST LOOP
DBMS_OUTPUT.PUT_LINE(nums(i));
END LOOP;
END;

На экране будет:
1
3
Cool
_________________
Get your hands up!!!
Make noise!!! Make noise!!!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Базы данных Часовой пояс: GMT + 3
Страница 1 из 1

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


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...