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

Динамический PLP / как передать исходящий параметр

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Справочник PL/PLUS: Функции, примеры, приёмы
Предыдущая тема :: Следующая тема  
Автор Сообщение
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    Ответить с цитатой
Полезность: Нет оценки
Smile Спасибо Леша.
Работает.
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Справочник PL/PLUS: Функции, примеры, приёмы Часовой пояс: GMT + 3
Страница 1 из 1

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