Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
pavelskv Участник
Вступление в Клуб: 18.01.2008
|
Пн Авг 18, 2008 12:23  Состояния |
|
Полезность: Нет оценки
|
Помимо системных состояний было принято решение использовать свои дополнительные статусы в документах (в одном типе). Хочется получать список всех состояний: системных и собственных, отсортированных по времени (можно и по ID). Системные, как водится, получаются по Ctrl+S.
В PL/SQL я это реализовал так (статическая выборка):
Код: | select a.OBJ_ID ID, to_char(a.TIME, 'DD/MM/YYYY HH24:MI:SS') TIME, e.NAME NAME, e.ID CODE
from IBS.OBJECT_STATE_HISTORY a, IBS.STATES e
where
e.CLASS_ID = 'DECL_ON_GET_CRED' and
a.STATE_ID = e.ID and
a.OBJ_ID = '407388569'
UNION
select to_char(b.C_DECL) ID, to_char(b.C_DATETIME, 'DD/MM/YYYY HH24:MI:SS') TIME, 'ВПБ.' || nvl(d.C_VPB_NAME, 'Отказано СБ') NAME, d.C_VPB_CODE
from
z#VPB_DECL_LOG b, z#VPB_DECL_STATE c, z#VPB_DECL_STATUS d
where
b.C_DECL = 407388569 and
b.C_DECL_STATE = c.C_VPB_STATUS and
c.C_VPB_STATUS = d.ID
order by 1
; |
А вот на PL/Plus не очень получается. Нашёл, как в библиотеке [SYS_DIARYS].[HLIB] достаются системные статусы, но в собственной операции этот способ не работает:
Код: | for (
select s(
s.OBJ_ID: ID,
to_char(s.TIME, 'DD/MM/YYYY HH24:MI:SS'): TIME,
s.STATE_ID: NAME
) in OBJECT_STATE_HISTORY%rowtype, (STATES%rowtype: states)
where s.OBJ_ID = v_this%id and s.STATE_ID = states
union ALL
select v(
v.[DECL]: ID,
to_char(v.[DATETIME], 'DD/MM/YYYY HH24:MI:SS'): TIME,
'ВПБ.' || nvl(vpbStatus.[VPB_NAME], 'Отказано СБ'): NAME
) in ::[VPB_DECL_LOG], (::[VPB_DECL_STATE] all: vpbState), (::[VPB_DECL_STATUS] all: vpbStatus)
where v.[DECL] = v_this and v.[DECL_STATE] = vpbState.[VPB_STATUS] and vpbState.[VPB_STATUS] = vpbStatus
order by 1, 2
) loop
stdio.put_line_buf(to_char(v.[ID]) || ': ' || v.[TIME] || ' ' || v.[NAME]);
end loop; |
Ошибки следующие:
Код: | PLP-NOT_CLASS_COMPONENT: У типа [DECL_ON_GET_CRED] нет реквизита или операции [OBJ_ID]
PLP-NOT_CLASS_COMPONENT: У типа [DECL_ON_GET_CRED] нет реквизита или операции [STATE_ID]
PLP-NOT_CLASS_COMPONENT: У типа [DECL_ON_GET_CRED] нет реквизита или операции [OBJECT_STATE_HISTORY]
PLP-NOT_COLLECTION: [OBJECT_STATE_HISTORY] не коллекция
... |
Без выборки из STATES - всё то же самое. Помогите! Как правильно выбирать из системных таблиц? |
|
 |
r00st Эксперт
Вступление в Клуб: 14.09.2007
|
Пн Авг 18, 2008 13:14   |
|
Полезность: 1
|
Доступ к любой таблице, неописанной как класс IBSO, осуществляется через %rowtype. Так что работать должно.
Расширенный синтаксис стоит? |
|
 |
pavelskv Участник
Вступление в Клуб: 18.01.2008
|
Пн Авг 18, 2008 14:33   |
|
Полезность: Нет оценки
|
Благодарю! Такая вот мелочь иногда замораживает продолжение написания.  |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|