Clientuser Formsweb & bei db Trigger
Formsweb Trigger
when-new-form-instance
declare
fake_timer TIMER;
begin
logout;
logon(NULL,NULL);
fake_timer := CREATE_TIMER('webutil',100,NO_REPEAT);
end;
when-timer-expired
declare
v_alert number(3);
v_step number;
instanz_name varchar2(64);
begin
:global.os_user := webutil_clientinfo.get_user_name;
edv.apldef.set_client_os_user(:global.os_user);
:no_db.begruessung := 'Hallo '||initcap(replace(upper(:global.os_user),'.',' '));
select global_name into instanz_name from global_name;
instanz_name := user ||'@'|| instanz_name;
v_step := 90;
SET_WINDOW_PROPERTY(forms_mdi_window, window_state, maximize);
v_step := 91;
SET_WINDOW_PROPERTY('window1', window_state, maximize);
v_step := 92;
SET_WINDOW_PROPERTY('window1', title, 'xxxxxxxxxxxxx V 24.03.2011 17:05 / '||instanz_name||' / Benutzer: '||initcap(replace(upper(:global.os_user),'.',' ')));
exception
when others then
message('Trigger When-timer-expired @'||v_step||' '||sqlerrm); pause;
end;
Datenbank Package
CREATE OR REPLACE PACKAGE APLDEF1 AS
PROCEDURE SET_CLIENT_OS_USER(P_USER VARCHAR2 := NULL);
FUNCTION CLIENT_OS_USER_IST_GESETZT RETURN BOOLEAN;
FUNCTION GET_CLIENT_OS_USER RETURN VARCHAR2;
END APLDEF1;
/
CREATE OR REPLACE PACKAGE BODY APLDEF1 AS
CURSOR C_SESSION IS
SELECT S.OSUSER, S.MACHINE, S.TERMINAL, S.PROGRAM, S.CLIENT_INFO
FROM SYS.V_$SESSION S
WHERE AUDSID = USERENV('SESSIONID');
CSESSION C_SESSION%ROWTYPE;
CLIENT_OS_USER VARCHAR2(30) := OS_USER;
CLIENT_OS_USER_GESETZT BOOLEAN := FALSE;
PROCEDURE SET_CLIENT_OS_USER(P_USER VARCHAR2 := NULL) IS
BEGIN
IF P_USER IS NOT NULL
THEN
CLIENT_OS_USER := P_USER;
CLIENT_OS_USER_GESETZT := TRUE;
END IF;
END SET_CLIENT_OS_USER;
FUNCTION CLIENT_OS_USER_IST_GESETZT RETURN BOOLEAN IS
BEGIN
RETURN CLIENT_OS_USER_GESETZT;
END CLIENT_OS_USER_IST_GESETZT;
FUNCTION GET_CLIENT_OS_USER RETURN VARCHAR2 IS
BEGIN
RETURN CLIENT_OS_USER;
END GET_CLIENT_OS_USER;
END APLDEF1;
/
Datenbank Tabellen Trigger
CREATE OR REPLACE TRIGGER EDV.TBI_KNA_CASH_BENUTZER
BEFORE INSERT OR UPDATE
ON EDV.KNA_CASH_BENUTZER
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
BEGIN
if inserting then
SELECT seq_kna_cash.NEXTVAL INTO :new.id FROM dual;
:new.angelegt_am := sysdate;
-- :new.angelegt_von := f_os_user;
:new.angelegt_von := edv.apldef.get_client_os_user;
elsif updating then
:new.geaendert_am := sysdate;
-- :new.geaendert_von := f_os_user;
:new.geaendert_von := edv.apldef.get_client_os_user;
end if;
END;
/