Home » Developer & Programmer » Forms » Pass Global Variable from form to db trigger
Pass Global Variable from form to db trigger [message #534437] Tue, 06 December 2011 02:02 Go to next message
aallan
Messages: 150
Registered: October 2011
Senior Member
Dears;

how can i pass global variable from form to db trigger ?

i have this trigger:

Create Or Replace Drop Trigger Access_Group_Category_Priv_Trg
After Delete Or Insert Or Update
On Scott.Access_Group_Category_Priv 
Referencing New As New Old As Old
For Each Row
Begin 
  If Inserting Then
    Insert Into Sale_Users_Privileges (Privilege_Code, Privilege_Name, Privilege_Priority, User_Id, System_Date)                                          
                                Values(:New.Category_Privilage, :New.Category_Privilage_Desc, :New.Category_Privilage_Priority, 
                                        /*here is a global variable from form*/, Sysdate);
                                                                      
  Elsif Updating Then
   Update Sale_Users_Privileges
      Set Privilege_Code     = :New.Category_Privilage,
          Privilege_Name     = :New.Category_Privilage_Desc, 
          Privilege_Priority = :New.Category_Privilage_Priority,
          User_Id            =  /*here is a global variable from form*/, 
          System_Date        =  Sysdate
    Where Privilege_Code     = :Old.Category_Privilage;
  
  Elsif Deleting Then
   Delete Sale_Users_Privileges
    Where Privilege_Code     = :Old.Category_Privilage;
  End If;
 End;
/


Thanks for help.

[Updated on: Tue, 06 December 2011 02:04]

Report message to a moderator

Re: Pass Global Variable from form to db trigger [message #534446 is a reply to message #534437] Tue, 06 December 2011 03:42 Go to previous messageGo to next message
Littlefoot
Messages: 21813
Registered: June 2005
Location: Croatia, Europe
Senior Member
Account Moderator
I don't think that you can do that (i.e. pass anything from anywhere to a database trigger).

You are setting the USER_ID value; what is it? Would a value returned by SYS_CONTEXT be OK?

For example: create a table in Scott's schema (that acts as your SALE_USERS_PRIVILEGES table) and a trigger on the DEPT table (acts as your ACCESS_GROUP_CATEGORY_PRIV table):
SQL> create table test
  2    (id number,
  3     who varchar2(30)
  4    );

Table created.

SQL> create or replace trigger trg_who
  2    after insert on dept
  3    for each row
  4  begin
  5    insert into test (id, who)
  6      values (seqa.nextval, sys_context('userenv', 'session_user'));
  7  end;
  8  /

Trigger created.

Let user SCOTT insert a record into a DEPT table:
SQL> insert into dept (deptno) values (90);

1 row created.

SQL> select * from test;

        ID WHO
---------- ------------------------------
         7 SCOTT

So far so good; now let another user insert privileges on SCOTT's DEPT table:
SQL> grant insert on dept to mike;

Grant succeeded.

Nice. Now connect as MIKE and repeat the insert:
SQL> connect mike/lion@ora10
Connected.

SQL> insert into scott.dept (deptno) values (92);

1 row created.

SQL> commit;

Commit complete.

Back to SCOTT to see what has happened:
SQL> connect scott/tiger@ora10
Connected.

SQL> select * from test;

        ID WHO
---------- ------------------------------
         8 MIKE
         7 SCOTT

SQL>

Seems to be OK. What do you think?
Re: Pass Global Variable from form to db trigger [message #534458 is a reply to message #534446] Tue, 06 December 2011 05:13 Go to previous messageGo to next message
aallan
Messages: 150
Registered: October 2011
Senior Member
thank you.
but your example shows the users at database level, right ?
My User_Id is not a db user, its a form level user (user who access or using the application).
Is there any way to have this user_id @ form level to used it in db trigger?
Re: Pass Global Variable from form to db trigger [message #534463 is a reply to message #534458] Tue, 06 December 2011 05:27 Go to previous messageGo to next message
cookiemonster
Messages: 13926
Registered: September 2008
Location: Rainy Manchester
Senior Member
You can create your own contexts. See here for an example.
Re: Pass Global Variable from form to db trigger [message #534464 is a reply to message #534463] Tue, 06 December 2011 05:36 Go to previous message
aallan
Messages: 150
Registered: October 2011
Senior Member
Thank you,
i will test it and replay to you.
thanks again
Previous Topic: how to generate unique document numbers when more than one user are inserting in a form at one time
Next Topic: When timer expires Oracle forms (3 Merged)
Goto Forum:
  


Current Time: Mon Jul 15 17:09:23 CDT 2024