Solved

Background Job Argument Error

  • 12 July 2021
  • 4 replies
  • 818 views

Userlevel 5
Badge +14
  • Hero (Customer)
  • 275 replies

I am trying to insert a record to shop order history when configuration change. I set an event when the configuration change triggers a script. However It gives an “mutating, trigger/function may not see it” error. To solve that I decide to use background jobs. I called the “transaction_sys.deferred_call” procedure from PL/SQL Developer. When I control the background jobs. It gives an error about the argument but I could not understand. 

 

Event
Script
Error 1
Deferred Call
Error 2

 

icon

Best answer by Wimali Athulathmudali 12 July 2021, 09:00

View original

This topic has been closed for comments

4 replies

Userlevel 5
Badge +8

Hi @hhy38 ,

I think your issue will be solved using this method “Shop_Order_History_API.Generate “ instead of using New__ method directly.

Thanks & best Regards,

Wimali

Userlevel 6
Badge +14

Hi @hhy38 ,

There is several errors in there, but your main challenge is that you cannot make a deferred call to a procedure that has output parameters.

Userlevel 6
Badge +15

Hi @hhy38,

 

You cannot call PROCEDURES having arguments of type IN/OUT or OUT with Transaction_SYS.Deferred_Call because you will get the below error in the background job,
Argument INFO_ is of type IN/OUT or OUT, which is not supported.
ORA-20105: Transaction.WRONG_ARGUMENT

 

This means you cannot call the standard New__, Modify__ and Remove__ PROCEDURES directly.

Option 1,

Find a similar PROCEDURE of the same API which gets the job done,
In your case Shop_Order_History_API.Generate (I'm not sure if this is available on App9).

DECLARE
id1_ NUMBER;
attr_ VARCHAR2(32000);
BEGIN
Client_SYS.Clear_Attr(attr_);
Client_SYS.Add_To_Attr('ORDER_NO_', '1', attr_);
Client_SYS.Add_To_Attr('RELEASE_NO_', '*', attr_);
Client_SYS.Add_To_Attr('SEQUENCE_NO_', '*', attr_);
Client_SYS.Add_To_Attr('MESSAGE_TEXT_', 'Message', attr_);
Client_SYS.Add_To_Attr('OLD_VALUE_', '1', attr_);
Client_SYS.Add_To_Attr('NEW_VALUE_', '2', attr_);
Client_SYS.Add_To_Attr('RESULT_KEY_', '', attr_);

Transaction_SYS.Deferred_Call(id_ => id1_,
procedure_name_ => 'Shop_Order_History_API.Generate',
argument_type_db_ => 'PARAMETER',
arguments_ => attr_,
description_ => 'Shop Order Configuration Changed');
END;

 

Option 2,

 

Cheers !
Dhananjaya.

Userlevel 5
Badge +14

@dhlelk, @Hans Andersen, @Wimali Athulathmudali Thanks for all answers.