应该不能,如果要得到当前IP和用户名,需要从oracle相关的表中查找。

解决方案 »

  1.   

    SQL> create table create_log
      2  (
      3      session_id int not null,  -- sessionid
      4      drop_time  date,  -- drop的時間
      5      ip_address varchar2(20),  -- ip地址
      6      object_owner varchar2(30),  -- 對象的擁有者
      7      object_name varchar2(30),  -- 對象名稱
      8      object_type varchar2(20),  -- 對象類型
      9      drop_by_user varchar2(30) -- 執行drop語句的用戶
     10  );Table created
    SQL> create table bb (id varchar2(10));Table createdcreate or replace trigger bb_tri
    before insert or update or delete on bb
    for each row
    begin 
        insert into create_log
         (session_id,
         drop_time,
         ip_address,
         object_owner,
         object_name,
         object_type,
         drop_by_user)
         values(USERENV('SESSIONID'),
         sysdate,
         SYS_CONTEXT('USERENV','IP_ADDRESS'),
         sys.dictionary_obj_owner,
         sys.dictionary_obj_name,
         sys.dictionary_obj_type,
         sys.login_user);    
    end;
    /
    SQL> insert into bb values('1');1 row insertedSQL> select * from create_log;                             SESSION_ID DROP_TIME   IP_ADDRESS           OBJECT_OWNER                   OBJECT_NAME                    OBJECT_TYPE          DROP_BY_USER
    --------------------------------------- ----------- -------------------- ------------------------------ ------------------------------ -------------------- ------------------------------
                                    5955865 2003-9-3 7: 172.31.10.22                                                                                            ECSQUERY