CftClub.ru
Клуб специалистов ЦФТ-Банк

Перенос из массива в массив
На страницу 1, 2  След.
 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Справочник PL/PLUS: Функции, примеры, приёмы
Предыдущая тема :: Следующая тема  
Автор Сообщение
ReiAver
Участник


Вступление в Клуб: 12.05.2022
СообщениеЧт Июл 18, 2024 18:45   Перенос из массива в массив Ответить с цитатой
Полезность: Нет оценки
Коллеги, подскажите, где глянуть вытягивание данных из массива в другой массив. Проблема неопределённых элементах обоих массивов.
pabrz
Участник со стажем


Вступление в Клуб: 27.09.2022
СообщениеПт Июл 19, 2024 03:49    Ответить с цитатой
Полезность: Нет оценки
У меня в голове закрутилось как минимум два подхода с разными вариациями.
Вы опишите ситуацию свою. Что вы хотите получить, и в чем конкретно трудность возникла. Навскидку я вообще никаких проблем тут не вижу.
ReiAver
Участник


Вступление в Клуб: 12.05.2022
СообщениеПт Июл 19, 2024 09:53    Ответить с цитатой
Полезность: Нет оценки
Есть массив AccountAnswer в либе FSSP_TYPE в тбп executory_process. На определённом шаге локал подхватывает этот и парсит его с целью добычи всех уникальных счетов находящихся в массиве. Потом я передаю счета в другую ИС получаю от них информацию по счетам и запихиваю обратно в AccountAnswer. Моя проблема в парсинга счетов. Толи у меня глаз запылился, толи фиг его знает э, но у меня постоянная проблема то пустой элемент массива счетов, то пустой элемент массива Account .
Volod
Эксперт


Вступление в Клуб: 19.09.2007
СообщениеПт Июл 19, 2024 10:29    Ответить с цитатой
Полезность: Нет оценки
ReiAver пишет:
проблема то пустой элемент массива счетов, то пустой элемент массива Account .


Т.е. визуально элемент массива есть, а операция его не видит или что?
ReiAver
Участник


Вступление в Клуб: 12.05.2022
СообщениеПт Июл 19, 2024 10:52    Ответить с цитатой
Полезность: Нет оценки
Проблема в том что элементы AccountAnswer заполняются по наличию я пытаюсь проверять по exists, но вылазит ошибка на
месте где я пытаюсь вставить exists "переполнение числа" Я подозреваю, что по длине макроса не проходит, там довольно длинные имена типа : p_data(i). AccountTransactionDatum. AccountNumber
Volod
Эксперт


Вступление в Клуб: 19.09.2007
СообщениеПт Июл 19, 2024 11:06    Ответить с цитатой
Полезность: Нет оценки
пример кода?
ReiAver
Участник


Вступление в Клуб: 12.05.2022
СообщениеПт Июл 19, 2024 11:34    Ответить с цитатой
Полезность: Нет оценки
Например : p_data.exists(p_data(idx). AccountTransactionDatum. AccountNumber) выдаёт ошибку "Переполнение числа".
Volod
Эксперт


Вступление в Клуб: 19.09.2007
СообщениеПт Июл 19, 2024 11:59    Ответить с цитатой
Полезность: Нет оценки
idx как определяется?
ReiAver
Участник


Вступление в Клуб: 12.05.2022
СообщениеПт Июл 19, 2024 12:05    Ответить с цитатой
Полезность: Нет оценки
Как number, переопределял на integer ничего не поменялось. А записей в массиве p_data всего 3000
Volod
Эксперт


Вступление в Клуб: 19.09.2007
СообщениеПт Июл 19, 2024 12:11    Ответить с цитатой
Полезность: Нет оценки
нужно наверное кода побольше, но idx - это first/next?
т.е. вы проверяете номер счет в массиве p_data , идя по циклу idx по массиву p_data? А зачем?
ReiAver
Участник


Вступление в Клуб: 12.05.2022
СообщениеПт Июл 19, 2024 12:24    Ответить с цитатой
Полезность: Нет оценки
Мне необходимо проверить существование Account Number в элементе массива p_data(idx) . По идее макрос должен возвращать true при наличии. Т. Е я прохожу по p_data нахожу счета и пишу их в массив p_acc, проверяя что счета не повторяются.
Volod
Эксперт


Вступление в Клуб: 19.09.2007
СообщениеПт Июл 19, 2024 14:16    Ответить с цитатой
Полезность: Нет оценки
exists проверяет наличие записи по индексу, а не реквизит массива
ReiAver
Участник


Вступление в Клуб: 12.05.2022
СообщениеПт Июл 19, 2024 14:51    Ответить с цитатой
Полезность: Нет оценки
Ок. А как проверять тогда на существование? На null же не проверишь?
Volod
Эксперт


Вступление в Клуб: 19.09.2007
СообщениеПт Июл 19, 2024 16:01    Ответить с цитатой
Полезность: Нет оценки
В цикле по массиву, если реквизит не индексный.
Т.е. если массив создавался так - p_data(номер счета).какой-то реквизит = ..., тогда можно проверить exists(p_data(номер счета)), а если так p_data(1).Номер_счета = ..., тогда нет
Эмиралька
Эксперт


Вступление в Клуб: 09.11.2015
СообщениеПн Июл 22, 2024 06:14    Ответить с цитатой
Полезность: Нет оценки
ReiAver пишет:
Например : p_data.exists(p_data(idx). AccountTransactionDatum. AccountNumber) выдаёт ошибку "Переполнение числа".


Естественно. AccountNumber - это не число вовсе, а в общем случае строка. Длиной 20 символов. Потому что включает в себя код ИСО валюты, а коды ИСО для валют-металлов включают буквы.
но не суть. суть в том, что 20 символов - это слишком много!
Массив p_data у вас скорее всего индексируется числом, причём массивы в oracle индексируются маленьким числом - диапазон примерно от -2000000000 до 2000000000, согласитесь, это не 20 символов.

Вам бы лучше индексировать p_data не по числу, а по строке.

А для чего вам проверка exists?


Последний раз редактировалось: Эмиралька (Пн Июл 22, 2024 06:25), всего редактировалось 3 раз(а)
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Справочник PL/PLUS: Функции, примеры, приёмы Часовой пояс: GMT + 3
На страницу 1, 2  След.
Страница 1 из 2

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