Массивы и как с ними работать
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
yaffil Профи
Вступление в Клуб: 18.08.2011
|
Чт Ноя 08, 2012 15:30  Массивы и как с ними работать |
|
Полезность: Нет оценки
|
Создал справочник, один из реквизитов - Массив, массив в свою очередь ссылается на Ссылки, а ссылка на тип: DECL_ON_CRED_REF (Заявки на получение кредита/гарантии).
Добавление, изменение, удаление в этот массив работает как положено, вопросов нет. Но проблема в том, что одна заявка должна принадлежать одному агенту, поэтому нужна проверка на наличии или отсутствии id данной заявки в данном массиве. И, если, хотя бы у одного агента данная заявка лежит в массиве - выдать pragma error.
Не могу понять, как это сделать. Как сделать селект, чтобы он вытащил все id заявок находящиеся у всех агентах в этих массивах.
Натолкните на мысль, плиз. |
|
 |
yaffil Профи
Вступление в Клуб: 18.08.2011
|
Чт Ноя 08, 2012 16:15   |
|
Полезность: Нет оценки
|
Код: |
select x(
x.[STR_AGENT].[NAME] :C_AGENT
,x.[STR_PRIVL_ZAYA]%id :C_ZAYA_ID
,x.[STR_PRIVL_ZAYA].[DOCUMENT_NUM] :C_ZAYA_NOM
,x.[STR_PRIVL_ZAYA].[DATE_DECL] :C_ZAYA_DATE
,x.[STR_PRIVL_ZAYA].[SUMMA] :C_ZAYA_SUM
) in ::[STR_AGENTS_BANK];
|
Вот поковырялся, такой селект правильно выдаёт номер, дату, сумму, но id (C_ZAYA_ID) выдаёт не понятное (наверное массива), а как тут получить id заявки? |
|
 |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
Чт Ноя 08, 2012 16:19   |
|
Полезность: Нет оценки
|
ФПЭ Информация о гашении облигаций и купонов. Инвесторы
Изменить EDIT#AUTO
begin
-- проверка уникальности
for x in this%collection
where x <> this and
nvl(x.[DOG],0) = nvl(P_DOG,0)
loop
if P_DOG is null then
pragma error('В массиве инвесторов уже есть запись для банка');
else
pragma error('В массиве инвесторов уже есть инвестор с договором №'||P_DOG.[NUM_DOG]);
end if;
end loop; |
|
 |
Volod Эксперт
Вступление в Клуб: 19.09.2007
|
Чт Ноя 08, 2012 16:22   |
|
Полезность: Нет оценки
|
Получить ID ссылки можно через ТИП.[].
Select бы посмотреть. |
|
 |
devor Профи
Вступление в Клуб: 13.02.2012
|
Чт Ноя 08, 2012 16:27  Re: Массивы и как с ними работать |
|
Полезность: Нет оценки
|
yaffil пишет: |
Не могу понять, как это сделать. Как сделать селект, чтобы он вытащил все id заявок находящиеся у всех агентах в этих массивах.
Натолкните на мысль, плиз. |
Как-то так примерно. Схемы под рукой нет, так что код написан от руки - может потребовать правки.
ref_my_ut ref [USER_TYPE]; -- элемент коллекции ссылок
count_of_my_ut integer; --счетчик количества вхождений
begin
select pc(count(ut.[])) in ::[PR_CRED] all, (::[USER_TYPE_REF] all : ut) all
where ut%collection = pc.[USER_TYPE]
and ut.[] = ref_my_ut
and pc!=this
and rownum<=1
into count_of_my_ut;
if count_of_my_ut >=1 then
pragma error (' ссылка на '||ref_my_ut.[CODE]||' уже есть в других коллекциях')
end if;
end; |
|
 |
yaffil Профи
Вступление в Клуб: 18.08.2011
|
Чт Ноя 08, 2012 16:29   |
|
Полезность: Нет оценки
|
Селект написал выше, мне бы вместо id массива по конструкции x.[STR_PRIVL_ZAYA]%id :C_ZAYA_ID получить id конкретной заявки в массиве, как это делает x.[STR_PRIVL_ZAYA].[DOCUMENT_NUM] :C_ZAYA_NOM.
Номер шагает по всем ссылкам и выдаёт собственно номер заяки. Как мне переделать x.[STR_PRIVL_ZAYA]%id чтобы получить id заявки, а не массива?
Мне он нужен будет в дальнейшем для написания отчётов. |
|
 |
devor Профи
Вступление в Клуб: 13.02.2012
|
Чт Ноя 08, 2012 16:44   |
|
Полезность: 2
|
yaffil пишет: | Селект написал выше, мне бы вместо id массива по конструкции x.[STR_PRIVL_ZAYA]%id :C_ZAYA_ID получить id конкретной заявки в массиве, как это делает x.[STR_PRIVL_ZAYA].[DOCUMENT_NUM] :C_ZAYA_NOM.
Номер шагает по всем ссылкам и выдаёт собственно номер заяки. Как мне переделать x.[STR_PRIVL_ZAYA]%id чтобы получить id заявки, а не массива?
Мне он нужен будет в дальнейшем для написания отчётов. |
Выкинь свой селект и смотри на мой, там нужно типы поменять на нужные и все.
Либо, приведи все Типы (базовый(владелец массива), массив ссылок, ссылка и структура).
Подозреваю, что STR_PRIVL_ZAYA - это ссылка. Тогда id заявки можно получить вот так STR_PRIVL_ZAYA.[] |
|
 |
yaffil Профи
Вступление в Клуб: 18.08.2011
|
Чт Ноя 08, 2012 16:53   |
|
Полезность: Нет оценки
|
devor пишет: |
Подозреваю, что STR_PRIVL_ZAYA - это ссылка. Тогда id заявки можно получить вот так STR_PRIVL_ZAYA.[] |
Да я описывал выше, STR_PRIVL_ZAYA - это реквизит на массив, массив на ссылку, ссылка на заявку
Спасибо огромное вот в такой конструкции выдаёт то что доктор прописал:
Код: |
STR_PRIVL_ZAYA.[]%id |
|
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|