Динамический PLP / как передать исходящий параметр
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
A_A_A Профи
Вступление в Клуб: 16.07.2009
|
Чт Сен 22, 2011 11:22  Динамический PLP / как передать исходящий параметр |
|
Полезность: Нет оценки
|
Подскажите как передать исходящий параметр.
Хочу написать операцию массового расчета Видов доходов Расходов В НУ.
Текст операции
Код: | P_ERROR [MEMO_32767];
V_ACTION varchar2(32000);
begin
P_ERROR := 'P_ERROR';
V_ACTION := '';
for t in ::[NU_VID_PL] where t.[NAME] like '%SUM.%' and t.[TABLE_NAME] is not null order by t.[TABLE_NAME]
loop
V_ACTION := '['||t.[CREATE_METH].[CLASS_ID]||']::['||t.[CREATE_METH].[SHORT_NAME]||']('||P_PERIOD||','
||t ||', '|| P_ERROR ||/*', ' || nvl( P_FILIAL%ID,null)||', '|| nvl(P_DEPART%ID,null)||*/ ');';
[RUNTIME]::[PLP].plp(V_ACTION);
-- [NU_AT_COMISS]::[CREATE_RKO_DOC](P_PERIOD, 10516231, l_err, P_FILIAL == P_FILIAL, P_DEPART == P_DEPART)
end loop;
end;
|
При запуске операцими возникает ошибка
[img]
ORA-20100: [RUNTIME]-[PLP] ERROR: PLP-NOT_CLASS_COMPONENT: У типа [OBJECT] нет реквизита или операции [P_ERROR]
ORA-06512: at "IBS.MESSAGE", line 102[/img]
-------
[img]
>>> text >>>
pragma pl_sql(true);
procedure Res(Params in varchar2, Delim in varchar2) is
Param [runtime]::[plp].varchar_table;
tmp boolean;
i integer;
begin
if Params is not null then
tmp := [runtime]::[plp].fill_param(Param, Params, Delim);
end if;
[NU_AT_COMISS]::[CREATE_SERV_DOG](47512236,47512231, P_ERROR);
end;
>>> errors >>>
parse: start parsing
-- parsing 1: 1
parse: finished parsing, errors: 0
W(0,396): PLP-ASSIGN_ERROR: Нежелательное присваивание [ref NU_PERIOD] <-- [NUMBER]
W(0,405): PLP-ASSIGN_ERROR: Нежелательное присваивание [ref NU_VID_PL] <-- [NUMBER]
E(0,415): PLP-NOT_CLASS_COMPONENT: У типа [OBJECT] нет реквизита или операции [P_ERROR]
E(0,415): PLP-BAD_PARAM_TYPE: Неправильный тип параметра [P_ERROR] операции [CREATE_SERV_DOG]
===> semantics: 1
parse: semantics checked, errors: 2
===> pl/sql: 1
-- parsing 2: 2
[/img]
В операции [CREATE_SERV_DOG]
P_ERROR - исходящий параметр, определенный на вкладке параметры[/img] |
|
 |
Alexsey Эксперт
Вступление в Клуб: 06.09.2007
|
Чт Сен 22, 2011 11:34   |
|
Полезность: 1
|
Код: | P_ERROR [MEMO_32767];
V_ACTION varchar2(32000);
begin
P_ERROR := 'P_ERROR';
V_ACTION := '';
for t in ::[NU_VID_PL] where t.[NAME] like '%SUM.%' and t.[TABLE_NAME] is not null order by t.[TABLE_NAME]
loop
V_ACTION := 'declare
p_err [memo32767];
begin
['||t.[CREATE_METH].[CLASS_ID]||']::['||t.[CREATE_METH].[SHORT_NAME]||']('||P_PERIOD||','
||t ||', '|| 'p_err'||/*', ' || nvl( P_FILIAL%ID,null)||', '|| nvl(P_DEPART%ID,null)||*/ ');
end;';
[RUNTIME]::[PLP].plp(V_ACTION);
-- [NU_AT_COMISS]::[CREATE_RKO_DOC](P_PERIOD, 10516231, l_err, P_FILIAL == P_FILIAL, P_DEPART == P_DEPART)
end loop; |
так попробуй.. должно работать _________________ всегда есть как минимум 2 выхода |
|
 |
A_A_A Профи
Вступление в Клуб: 16.07.2009
|
Чт Сен 22, 2011 12:39   |
|
Полезность: Нет оценки
|
Спасибо Леша.
Работает. |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|