2016-11-17 254 views
0

我的代碼如下所示。獲取錯誤:錯誤(2,3):PL/SQL:SQL語句被忽略錯誤(8,5):PL/SQL:ORA-00984:列不允許在這裏

create table XXINF_DB_OBJECT_DDL_LOG (
     EVENT_DATE DATE NOT NULL, 
     EVENT_TIMESTAMP TIMESTAMP NOT NULL, 
     EVENT_TYPE VARCHAR2(30) NOT NULL, 
     OBJECT_TYPE VARCHAR2(30) NOT NULL, 
     OBJECT_OWNER VARCHAR2(30) NOT NULL, 
     OBJECT_NAME VARCHAR2(30) NOT NULL, 
     DB_USER VARCHAR2(30) NOT NULL, 
     OS_USER VARCHAR2(100) , 
     HOST_NAME VARCHAR2(100), 
     HOST_IP_ADDRESS VARCHAR2(30) 
); 

create or replace trigger XXINF_DB_OBJECT_DDL_LOG_AUDIT 
AFTER DDL ON schema 
begin 
    insert into XXINF_DB_OBJECT_DDL_LOG values(
    sysdate, 
    systimestamp,  
    ora_sysevent,  
    ora_dict_obj_type, 
    ora_dict_obj_owner,  
    ora_dict_odj_name, 
    ora_login_user, 
    SYS_CONTEXT('USERENV','OS_USER'), 
    SYS_CONTEXT('USERENV','TERMINAL'), 
    SYS_CONTEXT('USERENV','IP_ADDRESS') 
); 
END; 
/
當我執行

得到錯誤:

Error(2,3): PL/SQL: SQL Statement ignored Error(8,5): PL/SQL:
ORA-00984: column not allowed here

回答

0

請使用更正如下:

create or replace trigger XXINF_DB_OBJECT_DDL_LOG_AUDIT 
AFTER DDL ON SCHEMA 
begin 
    insert into XXINF_DB_OBJECT_DDL_LOG 
    (
     EVENT_DATE, 
     EVENT_TIMESTAMP, 
     EVENT_TYPE, 
     OBJECT_TYPE, 
     OBJECT_OWNER, 
     OBJECT_NAME, 
     DB_USER, 
     OS_USER, 
     HOST_NAME, 
     HOST_IP_ADDRESS 

    ) 
    values 
    (
    sysdate, 
    systimestamp,  
    ora_sysevent,  
    ora_dict_obj_type , 
    ora_dict_obj_owner,  
    ora_dict_obj_name , 
    ora_login_user , 
    SYS_CONTEXT('USERENV','OS_USER'), 
    SYS_CONTEXT('USERENV','TERMINAL'), 
    SYS_CONTEXT('USERENV','IP_ADDRESS')); 

END; 
/
+0

啊哈,所以對錯位消息 「錯誤(8,5)」,在問題指的是第8行第5列,這是'ora_dict_odj_name'(拼寫錯誤)的開頭。你會認爲OP的開發工具會突出顯示它。 –

+0

不知道他正在使用的工具bt我真的沒有想太多。我只是集中精力解決問題。 – XING