powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Выборка через массив
3 сообщений из 3, страница 1 из 1
Выборка через массив
    #39512405
Петров Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, имеется запрос:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
select substr(a.dat1, 66, 8) ip,
                     case when a.dat2 like '%123%' Then 'Test1' Else 
                     case when a.dat2 like '%234%' Then 'Test2' Else 
                     case when a.dat2 like '%345%' Then 'Test3' Else '' End End End ddd
                from table1 a
               where a.ltimestamp > sysdate - 1 / 60 / 24
                 and a.serno >= (select max(serno) from table1) - 5000
                 and a.dat1 like 'UT%'



Так вот далее я хочу эту выборку преобразовать (IP->Страна) с помощью вызова функции
Подзапросом не получается сделать, оно начинает дичайше тормозить, хотя выбирает пару строк.

Что хочется:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
for R in (select substr(a.dat1, 66, 8) ip,
                     case when a.dat2 like '%123%' Then 'Test1' Else 
                     case when a.dat2 like '%234%' Then 'Test2' Else 
                     case when a.dat2 like '%345%' Then 'Test3' Else '' End End End ddd
                from table1 a
               where a.ltimestamp > sysdate - 1 / 60 / 24
                 and a.serno >= (select max(serno) from table1) - 5000
                 and a.dat1 like 'UT%') loop    
        fCountry := geodata.GetIPCountry(geodata.ParseIPAddress(R.ip));
        data(fCountry, R.ddd) := NVL(data(fCountry, R.ddd), 0) + 1;
    End Loop;



Как бы мне так объявить коллекцию/массив с 2 измерениями и в нее суммировать данные?
Вот так не получается: type TIPGeo Is Table of Integer Index by VarChar2, VarChar2;
После чего я по ней пройду и соберу итог в нужном виде...
Временную таблицу городить не хочется...
...
Рейтинг: 0 / 0
Выборка через массив
    #39512425
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Выборка через массив
    #39512445
Фотография Vladimir Filin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Петров АндрейКак бы мне так объявить коллекцию/массив с 2 измерениями и в нее суммировать данные?
...
После чего я по ней пройду и соберу итог в нужном виде...

В дополнение к предыдущему тостующему,
если "пройти" это будет чисто plsql-ная операция, то я бы собирал по курсору от результатов исходного запроса:

Bulk-Selecting into Nested Table of Records
https://docs.oracle.com/cloud/latest/db112/LNPLS/tuning.htm#CIHGGBGF

Можно ещё так коллекцию определить:
RECORD Type
https://docs.oracle.com/cloud/latest/db112/LNPLS/composites.htm#LNPLS99971
и собирать туда, что угодно.

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


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