To see the body of a trigger in another schema, you need the DEBUG privilege on the trigger's table. With that you can see whatever's there:
create table t ( c1 int );
create or replace trigger trig
before update on t
for each row
begin
:new.c1 := 1;
end;
/
grant create session to demo identified by demo;
grant debug on t to demo;
conn demo/demo
select owner, name, type, line, text
from all_source
where name = 'TRIG';
OWNER NAME TYPE LINE TEXT
CHRIS TRIG TRIGGER 1 trigger trig
CHRIS TRIG TRIGGER 2 before update on t
CHRIS TRIG TRIGGER 3 for each row
CHRIS TRIG TRIGGER 4 begin
CHRIS TRIG TRIGGER 5 :new.c1 := 1;
CHRIS TRIG TRIGGER 6 end;
You can call packaged procedures/functions in triggers. So use those if you want to keep trigger logic hidden from other users.