Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Объединение двух коллекции  [new]
Абылайханн
Member

Откуда:
Сообщений: 5
Добрый вечер! Есть функция которая возвращает коллекцию данных.

FUNCTION  search_alll(p_genre IN VARCHAR2 DEFAULT NULL, p_year IN movies.year%TYPE DEFAULT NULL)
RETURN search_block_pkg.t_data
IS
    v_dataset_g search_block_pkg.t_data;
    v_dataset_y search_block_pkg.t_data;
    v_dataset search_block_pkg.t_data;
BEGIN
    v_dataset_g := search_block_pkg.search_for_genre(p_genre);
    v_dataset_y := search_block_pkg.search_for_year(p_year);
    
    
    SELECT *
    BULK COLLECT INTO v_dataset
       FROM TABLE(v_dataset_g) T1 INNER JOIN TABLE(v_dataset_y) T2 USING(id);
       RETURN v_dataset;
END;


Тут я объеденил 2 коллекции. Но к сожелению не работает) Подскажите пожалуйста, как правильно объеденить эти коллекции)
SELECT *
    BULK COLLECT INTO v_dataset
       FROM TABLE(v_dataset_g) T1 INNER JOIN TABLE(v_dataset_y) T2 USING(id);
       RETURN v_dataset;
3 май 21, 00:27    [22317676]     Ответить | Цитировать Сообщить модератору
 Re: Объединение двух коллекции  [new]
Sayan Malakshinov
Member

Откуда: Мск
Сообщений: 5871
Абылайханн,

Multiset Operators
5.7.3 Assigning Set Operation Results to Nested Table Variables
3 май 21, 03:25    [22317699]     Ответить | Цитировать Сообщить модератору
 Re: Объединение двух коллекции  [new]
Sah
Member

Откуда: Moscow
Сообщений: 247
Абылайханн,

v_dataset:= v_dataset_g MULTISET UNION v_dataset_y ;

 


Только для объектного типа нужно реализовать метод MAP по уникальным полям или уникальному ID, типа так:
   MAP MEMBER FUNCTION match
      RETURN INTEGER
   IS
      v_hash         INT;
   BEGIN
      SELECT ORA_HASH (field1||fied2) INTO v_hash FROM DUAL;

      RETURN v_hash;
   END match;
4 май 21, 09:21    [22318119]     Ответить | Цитировать Сообщить модератору
 Re: Объединение двух коллекции  [new]
Elic
Member

Откуда:
Сообщений: 30164
Sah
MULTISET UNION
Только для объектного типа нужно реализовать метод MAP
Для multiset union all не нужно.
Sah
типа так:
ORA_HASH (field1||fied2)
Неправильный совет = медвежья услуга.
4 май 21, 11:29    [22318162]     Ответить | Цитировать Сообщить модератору
 Re: Объединение двух коллекции  [new]
Sah
Member

Откуда: Moscow
Сообщений: 247
Elic
Sah
MULTISET UNION
Только для объектного типа нужно реализовать метод MAP
Для multiset union all не нужно.



Блин, ага. У меня был multiset union DISTINCT

Elic
Sah
типа так:
ORA_HASH (field1||fied2)
Неправильный совет = медвежья услуга.

А что тут не так? Если пришли данные без уникального ключа из внешних источников?

Сообщение было отредактировано: 5 май 21, 10:32
5 май 21, 10:38    [22318647]     Ответить | Цитировать Сообщить модератору
 Re: Объединение двух коллекции  [new]
Elic
Member

Откуда:
Сообщений: 30164
Sah
А что тут не так? Если пришли данные без уникального ключа из внешних источников?
Не понимать проблему даже после намёка - это свойство быдлокодеров.
+
'1'||'11'
'11'||'1'
5 май 21, 11:53    [22318686]     Ответить | Цитировать Сообщить модератору
 Re: Объединение двух коллекции  [new]
Sah
Member

Откуда: Moscow
Сообщений: 247
Elic,

Ну, намёка изначально не было. После намёка - осознал. Просто в разрезе "знай свои данные" - мой пример, это то что мне нужно было.

Для такого случая:

Фамилия Имя Отчество
Люсак Хосе Мария Гонсалес
Люсак Хосе Мария Гонсалес
должен получить одинаковый хеш.
6 май 21, 09:15    [22319111]     Ответить | Цитировать Сообщить модератору
 Re: Объединение двух коллекции  [new]
Elic
Member

Откуда:
Сообщений: 30164
Sah
Люсак      Хосе Мария       Гонсалес
Люсак Хосе Мария Гонсалес
должен получить одинаковый хеш.
Подумай лучше.
6 май 21, 10:07    [22319117]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить